<?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>217783</bug_id>
          
          <creation_ts>2020-10-15 14:07:56 -0700</creation_ts>
          <short_desc>[Cocoa] Inspector Extensions: Add _WKInspectorExtension and related plumbing</short_desc>
          <delta_ts>2020-11-18 00:13:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>annulen</cc>
    
    <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1698273</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-15 14:07:56 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698274</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-15 14:08:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/69968787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698286</commentid>
    <comment_count>2</comment_count>
      <attachid>411489</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-15 14:33:08 -0700</bug_when>
    <thetext>Created attachment 411489
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698296</commentid>
    <comment_count>3</comment_count>
      <attachid>411493</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-15 14:56:13 -0700</bug_when>
    <thetext>Created attachment 411493
Patch v1.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698348</commentid>
    <comment_count>4</comment_count>
      <attachid>411493</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-10-15 16:19:14 -0700</bug_when>
    <thetext>Comment on attachment 411493
Patch v1.1

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

r-, as it doesn&apos;t compile :(

looks good overall tho!

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebExtensionController.js:26
&gt; +WI.WebExtensionController = class WebExtensionController extends WI.Object

Can we put the word &quot;Inspector&quot; in here somewhere (e.g. `WebInspectorExtensionController`)?  This would also more closely match the backend `*InspectorExtension` object naming, making the relationship clearer.  I think we should make it explicitly clear that this object &quot;controls extensions made to Web Inspector&quot; as opposed to &quot;controls web extensions&quot; (which really should be in `WI.BrowserManager`).

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebExtensionController.js:32
&gt; +        this._extensions = new Map;

NIT: how about `_extensionIDMap`?  `_extensions` sounds like an Array or Set :/

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebExtensionController.js:38
&gt; +            console.error(&quot;Unable to register extension, it&apos;s already registered: &quot;, extensionID, displayName);

Please avoid using any `console` functions other than `console.assert` as they are not stripped from production builds.

Also, please use `WI.reportInternalException` instead of `console.error` so that it is surfaced in engineering builds, thereby making it more likely that engineers will report the issue and it can be fixed.

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebExtensionController.js:45
&gt; +        console.log(&quot;Registered extension: &quot;, extensionID, displayName);

ditto (:38)

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebExtensionController.js:52
&gt; +            console.error(&quot;Unable to unregister extension with unknown ID: &quot;, extensionID);

ditto (:38)

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebExtensionController.js:59
&gt; +        console.log(&quot;Unregistered extension: &quot;, extensionID);

ditto (:38)

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebExtensionController.js:66
&gt; +    ExtensionRemoved: &quot;extension-removed&quot;

Style: missing comma

&gt; Source/WebInspectorUI/UserInterface/Models/WebExtension.js:26
&gt; +WI.WebExtension = class WebExtension extends WI.Object

ditto (WebExtensionController.js:26)

Also, there&apos;s no need to `extend WI.Object` since this object doesn&apos;t dispatch any events.  Though if you expect this to change in the future then it&apos;s fine to keep :)

&gt; Source/WebInspectorUI/UserInterface/Models/WebExtension.js:33
&gt; +        console.assert(typeof extensionID === &quot;string&quot;);
&gt; +        console.assert(typeof displayName === &quot;string&quot;);

NIT: I like to include the object being tested as an argument to `console.assert` after the condition so that it&apos;s also logged, making it easier to see the problem at a glance from the Console without trying to reproduce.
```
    console.assert(typeof extensionID === &quot;string&quot;, extensionID);
    console.assert(typeof displayName === &quot;string&quot;, displayName);
```

&gt; Source/WebInspectorUI/UserInterface/Models/WebExtension.js:39
&gt; +    // Public

Style: missing newline after

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js:201
&gt; +    registerExtension: function(extensionID, displayName)

Style: you can remove the `: function` in ES2015
```
    registerExtension(extensionID, displayName)
    {
        ...
```

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js:206
&gt; +    unregisterExtension: function(extensionID)

Ditto (:201)

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js:209
&gt;      }

Style: missing comma

&gt; Source/WebKit/UIProcess/API/APIInspectorExtension.cpp:49
&gt; +InspectorExtension::~InspectorExtension()
&gt; +{
&gt; +}

`InspectorExtension::~InspectorExtension() = default;`

&gt; Source/WebKit/UIProcess/API/APIInspectorExtension.h:49
&gt; +    explicit InspectorExtension(const WTF::String&amp; identifier, WebKit::WebInspectorUIExtensionControllerProxy&amp;);

NIT: I don&apos;t think `explicit` will actually do anything here.  AFAIU `explicit` is used to prevent implicit conversions, but this is not a converting constructor as it has multiple arguments.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm:207
&gt; +- (void)registerExtensionWithID:(NSString *)extensionID displayName:(NSString *)displayName completionHandler:(void(^)(NSError *, _WKInspectorExtension *))completionHandler

Should there be `nonnull` and `_Nullable`, or is that only needed in the `.h`?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm:223
&gt; +- (void)unregisterExtension:(_WKInspectorExtension *)extension completionHandler:(void(^)(NSError *))completionHandler

ditto (:207)

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorDelegate.h:46
&gt; +- (void)inspector:(_WKInspector *)inspector didShowTab:(NSString *)tabID forExtension:(_WKInspectorExtension *)inspectorExtension;
&gt; +- (void)inspector:(_WKInspector *)inspector didHideTab:(NSString *)tabID forExtension:(_WKInspectorExtension *)inspectorExtension;

Are these needed for this patch?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.h:33
&gt; +- (instancetype)init NS_UNAVAILABLE;

NIT: what about `+new`?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorExtension.h:35
&gt; +@property (readonly, nonatomic) NSString *extensionID;

Will this cause a problem for non-`ENABLE(INSPECTOR_EXTENSIONS)`?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:183
&gt; +- (void)registerExtensionWithID:(NSString *)extensionID displayName:(NSString *)displayName completionHandler:(void(^)(NSError * _Nullable, _WKInspectorExtension * _Nullable))completionHandler

ditto (_WKInspector.mm:207)

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:199
&gt; +- (void)unregisterExtension:(_WKInspectorExtension *)extension completionHandler:(void(^)(NSError * _Nullable))completionHandler

ditto (_WKInspector.mm:207)

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:49
&gt; +    auto callbacks = std::exchange(m_queuedFrontendActions, { });
&gt; +    for (auto&amp; callback : callbacks)
&gt; +        callback();

Are we sure we want to do this in `~WebInspectorUIExtensionControllerProxy`?  Doesn&apos;t this happen when inside `closeFrontendPageAndWindow`/`closeWindow`?  If anything I&apos;d expect this to happen before `m_inspectorPage = nullptr;` (unless we know that every `callback` null-checks `m_inspectedPage` before trying to access it).

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:68
&gt; +    auto callbacks = std::exchange(m_queuedFrontendActions, { });

ditto (:47)

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:77
&gt; +    whenFrontendHasLoaded([weakThis = makeWeakPtr(this), extensionID, displayName, completionHandler = WTFMove(completionHandler)] () mutable {

Why `mutable`?

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:89
&gt; +    whenFrontendHasLoaded([weakThis = makeWeakPtr(this), extensionID, completionHandler = WTFMove(completionHandler)] () mutable {

ditto (:77)

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:62
&gt; +    // Used to queue actions such as registering extensions that happen early on.
&gt; +    // There&apos;s no point sending these before the frontend is fully loaded.
&gt; +    Vector&lt;Function&lt;void()&gt;&gt; m_queuedFrontendActions;

How about `m_frontendLoadedCallbackQueue`?

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUI.h:50
&gt; +class WebInspectorUI : public RefCounted&lt;WebInspectorUI&gt;

Style: I think we should put the `: public RefCounted&lt;WebInspectorUI&gt;` on a separate line too

NIT: while you&apos;re at it, can we make this class `final`?

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUI.h:53
&gt; +    , public WebCore::InspectorFrontendClient {

(I&apos;d personally also put the `{` on a separate line too, but I dunno if that&apos;s WebKit style)

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUI.h:56
&gt; +    ~WebInspectorUI();

I feel like this should be `virtual`, but I could be wrong :|

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUI.h:159
&gt; +    WebPage&amp; frontendPage() const { return m_page; }

Why is this needed?

IMO `inspectorPage` is a better name, but I could go either way

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:56
&gt; +    Vector&lt;Ref&lt;JSON::Value&gt;&gt; arguments { JSON::Value::create(extensionID), JSON::Value::create(displayName) };

NIT: I&apos;d just inline this

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:57
&gt; +    m_inspector-&gt;frontendAPIDispatcher().dispatchCommand(&quot;registerExtension&quot;, WTFMove(arguments));

`&quot;registerExtension&quot;_s`

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:59
&gt; +    // FIXME: use return value of the evaluation to determine if we succeeded or failed.

Should we make a bug for this?

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:67
&gt; +    Vector&lt;Ref&lt;JSON::Value&gt;&gt; arguments { JSON::Value::create(extensionID) };

ditto (:56)

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:68
&gt; +    m_inspector-&gt;frontendAPIDispatcher().dispatchCommand(&quot;unregisterExtension&quot;, WTFMove(arguments));

`&quot;unregisterExtension&quot;_s`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698698</commentid>
    <comment_count>5</comment_count>
      <attachid>411601</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-16 11:35:11 -0700</bug_when>
    <thetext>Created attachment 411601
Patch v1.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698776</commentid>
    <comment_count>6</comment_count>
      <attachid>411622</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-16 15:12:23 -0700</bug_when>
    <thetext>Created attachment 411622
Patch v1.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704228</commentid>
    <comment_count>7</comment_count>
      <attachid>413110</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-03 14:54:50 -0800</bug_when>
    <thetext>Created attachment 413110
Patch v2.0

This has been cleaned up and has API tests. I expect some dodgeball with EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704275</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-03 16:34:53 -0800</bug_when>
    <thetext>(In reply to Brian Burg from comment #7)
&gt; Created attachment 413110 [details]
&gt; Patch v2.0
&gt; 
&gt; This has been cleaned up and has API tests. I expect some dodgeball with EWS.

Test failures are likely due to missing files in Test.html, d&apos;oh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704292</commentid>
    <comment_count>9</comment_count>
      <attachid>413110</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-11-03 17:17:53 -0800</bug_when>
    <thetext>Comment on attachment 413110
Patch v2.0

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

r=me, nice work!

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:34
&gt; +

missing `// Public`

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:45
&gt; +        console.log(&quot;Registered extension: &quot;, extensionID, displayName);

please remove all `console` other than `console.assert` as they are not stripped from production builds

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:51
&gt; +        if (!this._extensionIDMap.has(extensionID)) {

you could rework this to avoid the double (triple) lookup
```
    let extension = this._extensionIDMap.take(extensionID);
    if (!extension) {
        WI.reportInternalError(&quot;Unable to unregister extension with ID: &quot;, extensionID);
        return WI.WebInspectorExtension.ErrorCode.InvalidRequest;
    }

    this.dispatchEventToListeners(WI.WebInspectorExtensionController.Event.ExtensionRemoved, {extension});
```

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:57
&gt; +        let extension = this._extensionIDMap.get(extensionID);
&gt; +        this._extensionIDMap.delete(extensionID);

`this._extensionIDMap.take(extensionID)`

&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:59
&gt; +        console.log(&quot;Unregistered extension: &quot;, extensionID);

ditto (:45)

&gt; Source/WebInspectorUI/UserInterface/Models/WebInspectorExtension.js:26
&gt; +WI.WebInspectorExtension = class WebInspectorExtension extends WI.Object

this doesn&apos;t need to extend `WI.Object` if it&apos;s not dispatching any events

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js:211
&gt;      }

Style: missing comma

&gt; Source/WebKit/Shared/InspectorExtensionTypes.cpp:35
&gt; +WTF::String inspectorExtensionErrorToString(InspectorExtensionError error)

NIT: is the `WTF::` necessary?

&gt; Source/WebKit/Shared/InspectorExtensionTypes.cpp:53
&gt; +    return &quot;InternalError&quot;;

`_s`

&gt; Source/WebKit/Shared/InspectorExtensionTypes.h:35
&gt; +using InspectorExtensionTabID = WTF::String;
&gt; +using InspectorExtensionID = WTF::String;

NIT: I think the extension ID should go before the tab ID (both alphabetically and conceptually)

&gt; Source/WebKit/Shared/InspectorExtensionTypes.h:38
&gt; +    InternalError,

This doesn&apos;t appear to be used anywhere.  Can we defer adding it until it&apos;s actually needed?

&gt; Source/WebKit/Shared/InspectorExtensionTypes.h:40
&gt; +    InvalidState,

ditto (:38)

&gt; Source/WebKit/Shared/InspectorExtensionTypes.h:43
&gt; +    ResourceLoadFailed,

ditto (:38)

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:42
&gt; +    , public CanMakeWeakPtr&lt;WebInspectorUIExtensionControllerProxy&gt; {

i dunno what WebKit style is, but I&apos;d personally put the `{` on a newline (unindented) when there are multiple lines for inheritance

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:60
&gt; +    bool m_frontendLoaded { false };

NIT: can we move this below `m_frontendLoadedCallbackQueue` for (potentially) better packing?

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:44
&gt; +    Page* page = inspectorFrontend.frontendPage();
&gt; +    ASSERT(page);

If we expect this to always be valid, can we use `Page&amp;` instead?

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:63
&gt; +        if (resultString == &quot;InternalError&quot;)

`_s` (below too)

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:75
&gt; +        // If the evaluation result is a string, the frontend returned an error string.
&gt; +        // Anything else (falsy values, objects, arrays, DOM, etc.) is interpreted as success.

NIT: I&apos;d move this right before the `if (result.isString()) {`

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:107
&gt; +        completionHandler(true);

If you&apos;re only ever sending back `true`, then the `bool` is kinda pointless.  Could you `void(Optional&lt;InspectorExtensionError&gt;)` instead (i.e. `WTF::nullopt` is &quot;no problem&quot;)?

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:130
&gt; +        completionHandler(true);

ditto (:107)

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h:49
&gt; +    , public CanMakeWeakPtr&lt;WebInspectorUIExtensionController&gt; {

ditto (WebInspectorUIExtensionControllerProxy.h:42)

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h:64
&gt; +    Optional&lt;InspectorExtensionError&gt; parseInspectorExtensionErrorFromResult(JSC::JSValue result);

forward declare `JSC::JSValue`?

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h:66
&gt; +    WeakPtr&lt;WebCore::InspectorFrontendClient&gt; m_inspectorFrontend;

NIT: shouldn&apos;t this really be called `m_inspectorFrontendClient` (or just `m_frontendClient`)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704415</commentid>
    <comment_count>10</comment_count>
      <attachid>413162</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-04 07:49:01 -0800</bug_when>
    <thetext>Created attachment 413162
Patch v2.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704453</commentid>
    <comment_count>11</comment_count>
      <attachid>413110</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-04 08:58:05 -0800</bug_when>
    <thetext>Comment on attachment 413110
Patch v2.0

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:45
&gt;&gt; +        console.log(&quot;Registered extension: &quot;, extensionID, displayName);
&gt; 
&gt; please remove all `console` other than `console.assert` as they are not stripped from production builds

I&apos;ll revert this for now, but we should have a conversation about the intent for release logging. Diagnostic logging is not useful if only errors get logged.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/WebInspectorExtensionController.js:57
&gt;&gt; +        this._extensionIDMap.delete(extensionID);
&gt; 
&gt; `this._extensionIDMap.take(extensionID)`

Oh, yeah.

&gt;&gt; Source/WebKit/Shared/InspectorExtensionTypes.h:38
&gt;&gt; +    InternalError,
&gt; 
&gt; This doesn&apos;t appear to be used anywhere.  Can we defer adding it until it&apos;s actually needed?

It&apos;s used in the default case of the JSValue.toWTFString switch.

&gt;&gt; Source/WebKit/Shared/InspectorExtensionTypes.h:40
&gt;&gt; +    InvalidState,
&gt; 
&gt; ditto (:38)

ok

&gt;&gt; Source/WebKit/Shared/InspectorExtensionTypes.h:43
&gt;&gt; +    ResourceLoadFailed,
&gt; 
&gt; ditto (:38)

ok

&gt;&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:42
&gt;&gt; +    , public CanMakeWeakPtr&lt;WebInspectorUIExtensionControllerProxy&gt; {
&gt; 
&gt; i dunno what WebKit style is, but I&apos;d personally put the `{` on a newline (unindented) when there are multiple lines for inheritance

That&apos;s my preference as well but style bot doesn&apos;t agree. And I don&apos;t care enough to look into it.

&gt;&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:60
&gt;&gt; +    bool m_frontendLoaded { false };
&gt; 
&gt; NIT: can we move this below `m_frontendLoadedCallbackQueue` for (potentially) better packing?

ok

&gt;&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:44
&gt;&gt; +    ASSERT(page);
&gt; 
&gt; If we expect this to always be valid, can we use `Page&amp;` instead?

We don&apos;t, because InspectorFrontendClientLocal stores a Page* instead of a Page&amp;. This could probably be ironed out if InspectorFrontendClientLocal is indirectly owned by the Page.

&gt;&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:107
&gt;&gt; +        completionHandler(true);
&gt; 
&gt; If you&apos;re only ever sending back `true`, then the `bool` is kinda pointless.  Could you `void(Optional&lt;InspectorExtensionError&gt;)` instead (i.e. `WTF::nullopt` is &quot;no problem&quot;)?

I agree. The reason I did this is that every other command I can think of will have a return value, so I want all IPC to use Expected&lt;T,E&gt; as the return type.

In this case there is no return value, so  started with Expected&lt;void, InspectorExtensionError&gt;. This fails due to various problems in encoding/decoding. So a dummy boolean instead.

&gt;&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h:64
&gt;&gt; +    Optional&lt;InspectorExtensionError&gt; parseInspectorExtensionErrorFromResult(JSC::JSValue result);
&gt; 
&gt; forward declare `JSC::JSValue`?

ok

&gt;&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h:66
&gt;&gt; +    WeakPtr&lt;WebCore::InspectorFrontendClient&gt; m_inspectorFrontend;
&gt; 
&gt; NIT: shouldn&apos;t this really be called `m_inspectorFrontendClient` (or just `m_frontendClient`)?

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704465</commentid>
    <comment_count>12</comment_count>
      <attachid>413172</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-04 09:35:22 -0800</bug_when>
    <thetext>Created attachment 413172
Patch v2.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704551</commentid>
    <comment_count>13</comment_count>
      <attachid>413193</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-04 12:02:53 -0800</bug_when>
    <thetext>Created attachment 413193
Patch v2.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705015</commentid>
    <comment_count>14</comment_count>
      <attachid>413353</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-05 14:36:39 -0800</bug_when>
    <thetext>Created attachment 413353
Patch v2.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705041</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-05 16:03:49 -0800</bug_when>
    <thetext>Committed r269486: &lt;https://trac.webkit.org/changeset/269486&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413353.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705300</commentid>
    <comment_count>16</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-11-06 10:44:16 -0800</bug_when>
    <thetext>Reverted r269486 for reason:

Caused 50+ timeouts on Mac Debug WK2

Committed r269524: &lt;https://trac.webkit.org/changeset/269524&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706561</commentid>
    <comment_count>17</comment_count>
      <attachid>413849</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-11-11 12:09:41 -0800</bug_when>
    <thetext>Created attachment 413849
Patch v2.5 - for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706607</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-11 13:45:01 -0800</bug_when>
    <thetext>Committed r269701: &lt;https://trac.webkit.org/changeset/269701&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413849.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708517</commentid>
    <comment_count>19</comment_count>
      <attachid>413849</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-11-18 00:13:18 -0800</bug_when>
    <thetext>Comment on attachment 413849
Patch v2.5 - for EWS

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

&gt; Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.cpp:46
&gt; +//    WTFReportBacktrace();

Oops, these landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411489</attachid>
            <date>2020-10-15 14:33:08 -0700</date>
            <delta_ts>2020-10-15 15:06:31 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-217783-20201015143307.patch</filename>
            <type>text/plain</type>
            <size>96547</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJiOTYzMGEyMjFkZmUxMDllYjZhMDA2
YzRkNDViMTBlOTJiNDJhYTkuLjk3NjQ1OGNkNWNjYjZkOTM3Yzc3ZGUxNDlhMzU3MjA1NjkzNDky
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMTUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9X
S0luc3BlY3RvckV4dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82OTk2ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmg6CisgICAgICAgIEFkZCBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
LCB3aGljaCBpcyBvbmx5IG9uIGZvciB0aGUgQ29jb2EgbWFjT1MgcG9ydC4KKwogMjAyMC0xMC0x
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IERpc2FsbG93IHBvcnRzIGluIGZpbGUgVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXgg
YWE2Y2NmN2UyYzJjNTNiNWY3YWVkMDZkZjBlZmFhMzQ3NTUwMTFjYS4uYjM0YTI3ZGNhYTU4ZjU4
Y2U4MzYxZDU2MDI0NjNjZTQwMWVkMThmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMjAtMTAtMTUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9XS0luc3BlY3RvckV4
dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTk2
ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOiBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qczoKKyAgICAgICAgKFdJ
LkFwcENvbnRyb2xsZXJCYXNlKToKKyAgICAgICAgKFdJLkFwcENvbnRyb2xsZXJCYXNlLnByb3Rv
dHlwZS5nZXQgZXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIEhhbmcgdGhlIGV4dGVuc2lv
biBjb250cm9sbGVyIG9mZiBvZiB0aGUgZ2xvYmFsIHNpbmdsZXRvbiwgYXMgdGhlcmUgY2FuIG9u
bHkgYmUgb25lLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJFeHRl
bnNpb25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuV2ViRXh0ZW5zaW9uQ29udHJvbGxlcik6
CisgICAgICAgIChXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckV4
dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS51
bnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIEZvciBub3csIGp1c3Qga2VlcCB0
aGUgVVVJRHMgaW4gYSBtYXAgYW5kIGxvZyB0aGUgcmVzdWx0LgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Nb2RlbHMvV2ViRXh0ZW5zaW9uLmpzOgorICAgICAgICAoV0kuV2ViRXh0ZW5zaW9u
KToKKyAgICAgICAgKFdJLldlYkV4dGVuc2lvbi5wcm90b3R5cGUuZ2V0IGV4dGVuc2lvbklEKToK
KyAgICAgICAgKFdJLldlYkV4dGVuc2lvbi5wcm90b3R5cGUuZ2V0IGRpc3BsYXlOYW1lKToKKyAg
ICAgICAgQWRkZWQuIFRoaXMgaXMgYSBkYXRhIG9iamVjdCBmb3Igbm93LgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAgICAg
KEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21wbGV0ZWQpOgorICAgICAgICAoSW5zcGVjdG9y
RnJvbnRlbmRBUEkucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRl
bmRBUEkudW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3J3YXJkIGludm9j
YXRpb25zIHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxlci4KKwogMjAyMC0xMC0xNCAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVH
UkVTU0lPTihyMjY3MTQ4KTogbmV3IEJpZyBTdXIgc3R5bGVzIGFyZSBub3QgdXNlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBhZjk2ZjRhOTkzYjliMGU0MDQ3Yzc5MWJiOGMyMTAxMDNjOWI1ZmM1Li4wNmNhZjZiOGYy
MjU4YzQzNTNiMTljNTY0ZWUzOTZmNzNlMGEwODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBA
QAorMjAyMC0xMC0xNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBb
Q29jb2FdIEluc3BlY3RvciBFeHRlbnNpb25zOiBBZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFu
ZCByZWxhdGVkIHBsdW1iaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTc3ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5OTY4Nzg3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiBpcyBuZXcgU1BJIHRoYXQgcmVwcmVzZW50cyBhIFdlYiBFeHRlbnNpb24gdGhh
dCB1c2VzIHRoZSAnZGV2dG9vbHMnCisgICAgICAgIEFQSSB0byBpbnRlcmFjdCB3aXRoIFdlYiBJ
bnNwZWN0b3IuIEFuIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkIHdpdGggaXRzIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkhvc3QuCisgICAgICAgIEEgV2ViS2l0IGNsaWVudCB0aGF0IHN1cHBvcnRzIFdl
YiBFeHRlbnNpb25zIGNhbiB1c2UgdGhpcyBjbGFzcyB0byBpbXBsZW1lbnQgJ2RldnRvb2xzJyBl
eHRlbnNpb24gQVBJcy4KKworICAgICAgICBBZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBt
ZXRob2RzIHRvIHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyIGFuIGV4dGVuc2lvbi4KKyAgICAgICAg
QWRkIHBsdW1iaW5nIHNvIHRoYXQgdGhlIGV4dGVuc2lvbiBpbiByZWdpc3RlcmVkIGluIHRoZSBm
cm9udGVuZCB3aXRoIFdJLldlYkV4dGVuc2lvbkNvbnRyb2xsZXIuCisKKyAgICAgICAgTGF0ZXIg
cGF0Y2hlcyB3aWxsIGZsZXNoIG91dCB0aGUgbmVlZGVkIGZ1bmN0aW9uYWxpdHkgdG8gaW1wbGVt
ZW50IHJlc3Qgb2YgdGhlICdkZXZ0b29scycgQVBJLgorCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgTmV3
IEFQSSBvYmplY3QgdHlwZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZSk6CisgICAg
ICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6SW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAg
ICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjp+SW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAg
ICAgQWRkZWQuIFRoaXMgaXMgYSBwbGFjZWhvbGRlciBvYmplY3QgdGhhdCdzIHVzZWQgZm9yIHRo
ZSB3cmFwcGVyIHN5c3RlbSwKKyAgICAgICAgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBzaW5nbGUgQysr
IG9iamVjdHMgZm9yIGVhY2ggZXh0ZW5zaW9uIHRvIGJhY2sgdGhlIEFQSSBvYmplY3QuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0
b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICBJbXBsZW1lbnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lv
bkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8gdGhlIEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06Cisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBfYXBpT2JqZWN0XSk6CisgICAgICAgICgt
W19XS0luc3BlY3RvckV4dGVuc2lvbiBleHRlbnNpb25JRF0pOgorICAgICAgICBBZGRlZC4gVGhp
cyBpcyBhIGRhdGEgb2JqZWN0IHRoYXQncyBhbHNvIHVzZWQgYXMgYSB0b2tlbiB0byB1bnJlZ2lz
dGVyIHRoZSBleHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvbkhvc3QuaDogQWRkIG5ldyBTUEkuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB1
bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBJbXBsZW1l
bnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8gdGhl
IEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5z
cGVjdG9yUHJveHk6OmV4dGVuc2lvbkNvbnRyb2xsZXIgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93
KToKKyAgICAgICAgU2V0IHVwIHRoZSBleHRlbnNpb24gY29udHJvbGxlciBvYmplY3QgYWZ0ZXIg
dGhlIGZyb250ZW5kIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIFNldCB1cCB0aGUg
ZXh0ZW5zaW9uIGNvbnRyb2xsZXIgb2JqZWN0IGFmdGVyIHRoZSBmcm9udGVuZCBoYXMgYmVlbiBj
cmVhdGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZXh0ZW5zaW9uQ29udHJv
bGxlciBjb25zdCk6IEFkZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6On5XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp3aGVuRnJvbnRlbmRIYXNMb2FkZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdp
c3RlckV4dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3J3YXJkIEFQSSByZXF1ZXN0cyB0byB0
aGUgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzIHRvIGJlIGV2YWx1YXRlZCBpbiB0aGUgZnJv
bnRlbmQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmRpc3BhdGNoQ29tbWFuZCk6CisgICAgICAg
IEFkZCBhIG1vcmUgZ2VuZXJpYyB3YXkgdG8gZW5jb2RlIHZhbHVlcyB0byBiZSBwYXNzZWQgYXMg
YXJndW1lbnRzIHRvIEluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6
OmZyb250ZW5kUGFnZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSTo6ZnJvbnRlbmRBUElEaXNwYXRjaGVyKTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJF
eHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICBIYW5kbGUgaW5jb21pbmcgbWVz
c2FnZXMgYnkgZm9yd2FyZGluZyB0aGUgYXNzb2NpYXRlZCBjb21tYW5kIHRvIFdJLldlYkV4dGVu
c2lvbkNvbnRyb2xsZXIKKyAgICAgICAgdmlhIEluc3BlY3RvckZyb250ZW5kQVBJIGV2YWx1YXRp
b25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06Cisg
ICAgICAgIEZhbGxvdXQgZnJvbSB1bmlmaWVkIGJ1aWxkIGNodW5raW5nIHNoaWZ0cy4KKwogMjAy
MC0xMC0xNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W21hY09TXSBJc3N1ZSBzYW5kYm94IGV4dGVuc2lvbiB0byBhZGRpdGlvbmFsIGljb24gc2Vydmlj
ZSB3aGVuIGF0dGFjaG1lbnQgZWxlbWVudCBpcyBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
LmgKaW5kZXggNjU5NmYxMjljMWNiNzVlOWEwMmUwMDMxMDdjZDNkNmZhOTJkN2E2Mi4uMmNiMjBl
ZDU4YzhjYmIyNTgzYWM5MzA0MjkxN2E1ZjFhMTBjZTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZS5oCkBAIC0zMjgsNiArMzI4LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0lOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0VYVEVOU0lPTlMgMAorI2Vu
ZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SX1RFTEVNRVRSWSkKICNkZWZpbmUg
RU5BQkxFX0lOU1BFQ1RPUl9URUxFTUVUUlkgMAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZUNvY29hLmgKaW5kZXggY2RkOTliN2Y5NDI4ZGUxMWE0ZDFmODk2NzQxMDY1MzhlNjQ1NjQ1
ZS4uNzYzOGVjODk3ZTJmMzlkYzQ5MmQ0NDZiNDhmMjZlNDBjZTQxYWE1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtMjcyLDYgKzI3MiwxMCBAQAogI2RlZmluZSBFTkFC
TEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyAxCiAjZW5kaWYKIAorI2lmICFkZWZp
bmVkKEVOQUJMRV9JTlNQRUNUT1JfRVhURU5TSU9OUykgJiYgUExBVEZPUk0oTUFDKQorI2RlZmlu
ZSBFTkFCTEVfSU5TUEVDVE9SX0VYVEVOU0lPTlMgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChF
TkFCTEVfSU5TUEVDVE9SX1RFTEVNRVRSWSkKICNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUl9URUxF
TUVUUlkgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzCmlu
ZGV4IDYxZDRjNDU5NDRkYjY2OTU1ZDAwMDk3M2EzZTZkZWEzYWU2NmVhNTYuLjk2ZGZiMGU2NmVm
MTUxODExMjY0ODFkYTMxY2IxOTQxNGVmMzE1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENv
bnRyb2xsZXJCYXNlLmpzCkBAIC00MSwxMSArNDEsMTQgQEAgV0kuQXBwQ29udHJvbGxlckJhc2Ug
PSBjbGFzcyBBcHBDb250cm9sbGVyQmFzZQogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2luaXRpYWxpemVkID0gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9u
Q29udHJvbGxlciA9IG5ldyBXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyOwogICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IGRlYnVnZ2FibGVUeXBlKCkgeyB0aHJvdyBXSS5Ob3RJbXBs
ZW1lbnRlZEVycm9yLnN1YmNsYXNzTXVzdE92ZXJyaWRlKCk7IH0KKyAgICBnZXQgZXh0ZW5zaW9u
Q29udHJvbGxlcigpIHsgcmV0dXJuIHRoaXMuX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KIAogICAg
IC8vIFNpbmNlIHZhcmlvdXMgbWVtYmVycyBvZiB0aGUgYXBwIGNvbnRyb2xsZXIgZGVwZW5kIG9u
IHRoZSBnbG9iYWwgc2luZ2xldG9uIHRvIGV4aXN0LAogICAgIC8vIHNvbWUgaW5pdGlhbGl6YXRp
b24gbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHRoZSBhcHAgY29udHJvbGxlciBoYXMgYmVlbiBjb25z
dHJ1Y3RlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1dlYkV4dGVuc2lvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJFeHRlbnNpb25Db250cm9sbGVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmMDhjMjg5YzA4MmJjNThjZjQ3M2RlYTM4OTVlNWVkNmY0YjA1ODUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9XZWJFeHRlbnNpb25Db250cm9sbGVyLmpzCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3MgV2ViRXh0ZW5zaW9uQ29u
dHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9ucyA9IG5ldyBNYXA7Cisg
ICAgfQorCisgICAgcmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2V4dGVuc2lvbnMuaGFzKGV4dGVuc2lvbklEKSkgewor
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5hYmxlIHRvIHJlZ2lzdGVyIGV4dGVuc2lvbiwg
aXQncyBhbHJlYWR5IHJlZ2lzdGVyZWQ6ICIsIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgZXh0ZW5zaW9uID0g
bmV3IFdJLldlYkV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOworICAgICAgICB0
aGlzLl9leHRlbnNpb25zLnNldChleHRlbnNpb25JRCwgZXh0ZW5zaW9uKTsKKworICAgICAgICBj
b25zb2xlLmxvZygiUmVnaXN0ZXJlZCBleHRlbnNpb246ICIsIGV4dGVuc2lvbklELCBkaXNwbGF5
TmFtZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLldlYkV4dGVu
c2lvbkNvbnRyb2xsZXIuRXZlbnQuRXh0ZW5zaW9uQWRkZWQsIHtleHRlbnNpb259KTsKKyAgICB9
CisKKyAgICB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklEKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9leHRlbnNpb25zLmhhcyhleHRlbnNpb25JRCkpIHsKKyAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoIlVuYWJsZSB0byB1bnJlZ2lzdGVyIGV4dGVuc2lvbiB3aXRoIHVua25vd24g
SUQ6ICIsIGV4dGVuc2lvbklEKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGxldCBleHRlbnNpb24gPSB0aGlzLl9leHRlbnNpb25zLmdldChleHRlbnNpb25JRCk7
CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbnMuZGVsZXRlKGV4dGVuc2lvbklEKTsKKworICAgICAg
ICBjb25zb2xlLmxvZygiVW5yZWdpc3RlcmVkIGV4dGVuc2lvbjogIiwgZXh0ZW5zaW9uSUQpOwor
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5XZWJFeHRlbnNpb25Db250
cm9sbGVyLkV2ZW50LkV4dGVuc2lvblJlbW92ZWQsIHtleHRlbnNpb259KTsKKyAgICB9Cit9Owor
CitXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50ID0geworICAgIEV4dGVuc2lvbkFkZGVk
OiAiZXh0ZW5zaW9uLWFkZGVkIiwKKyAgICBFeHRlbnNpb25SZW1vdmVkOiAiZXh0ZW5zaW9uLXJl
bW92ZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCmluZGV4IGU0MWEwOGFlZTExNWE5NDdmNDQxNGRjY2E1NTMyZGQ1ODdkZWFlMjMuLmVkMmY3
ZTljNjQyZjAxMzRhY2RkYjE0OWM1YzIxZWU5MGNkZjM1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTQ4Niw2ICs0ODYsNyBAQAogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvVHlwZURlc2NyaXB0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL1R5cGVTZXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvVVJMQnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9XZWJFeHRlbnNpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
V2ViU29ja2V0UmVzb3VyY2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
V3JhcHBlZFByb21pc2UuanMiPjwvc2NyaXB0PgogCkBAIC04ODgsNiArODg5LDcgQEAKICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvSEFSQnVpbGRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0hlYXBNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvSW5kZXhlZERCTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1dlYkV4dGVuc2lvbkNvbnRyb2xsZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmlld0NvbnRy
b2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9KYXZhU2Ny
aXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkNvbnRyb2xsZXJzL0xheWVyVHJlZU1hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkV4dGVuc2lv
bi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJFeHRl
bnNpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg1ZWJjYzc0YzU4MTkzNGVkNDU0NDZiYzQzM2M0YmQ3Njk1
YzJjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9XZWJFeHRlbnNpb24uanMKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1dJLldlYkV4dGVuc2lvbiA9IGNsYXNzIFdlYkV4dGVuc2lvbiBleHRlbmRzIFdJLk9iamVjdAor
eworICAgIGNvbnN0cnVjdG9yKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGV4dGVuc2lvbklE
ID09PSAic3RyaW5nIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBkaXNwbGF5TmFt
ZSA9PT0gInN0cmluZyIpOworCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbklEID0gZXh0ZW5zaW9u
SUQ7CisgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7CisgICAgfQorCisg
ICAgLy8gUHVibGljCisgICAgZ2V0IGV4dGVuc2lvbklEKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5z
aW9uSUQ7IH0KKyAgICBnZXQgZGlzcGxheU5hbWUoKSB7IHJldHVybiB0aGlzLl9kaXNwbGF5TmFt
ZTsgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMWQx
ZjI4OGJiODM0ZDQ4MmY2NGUzOWVmMGZiZDUzODZkODc0ZGVmMC4uNzNmMTc5NzdjMTUxMmU0OTFm
NmJiYzRhZTM4NWI2NDE4Y2RjYTAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRl
bmRBUEkuanMKQEAgLTE5Niw1ICsxOTYsMTUgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChJbnNwZWN0b3JGcm9udGVu
ZEFQSS5fcGVuZGluZ0NvbW1hbmRzW2ldKTsKIAogICAgICAgICBkZWxldGUgSW5zcGVjdG9yRnJv
bnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kczsKKyAgICB9LAorCisgICAgcmVnaXN0ZXJFeHRlbnNp
b246IGZ1bmN0aW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAgIFdJ
LnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVyLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lv
bklELCBkaXNwbGF5TmFtZSk7CisgICAgfSwKKworICAgIHVucmVnaXN0ZXJFeHRlbnNpb246IGZ1
bmN0aW9uKGV4dGVuc2lvbklEKQorICAgIHsKKyAgICAgICAgV0kuc2hhcmVkQXBwLmV4dGVuc2lv
bkNvbnRyb2xsZXIudW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCk7CiAgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2
ODQ1Y2U4YmQ0MGY2NzFjMzI0YjliMjUyNGQ5Yzc0ZGVkZjAxMWEwLi4zZjJmYjQxYTIzMDc0M2Vj
NGFiNjIwN2UxMWM3MzNiZjY0YTg3YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05NSw2ICs5NSw3IEBAICQoUFJPSkVDVF9ESVIpL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmlu
CiskKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMzYsNiArMTM3
LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CmluZGV4IDQ3Y2RmZTBlNjdkN2Q4ZWUyZGRiOGE1Y2VlOGI2NjcwODdiZjk2N2Eu
LjQ3ZDRiMWQwYzY0NzhkZDBjZTZkMmY3Y2MwZTk2ZjJiMjdmMTRjYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzI5LDYgKzMyOSw5
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzUmVwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJT
ZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJ
bnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hl
ck1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNTEwYzc5
ODVjNTg3ZDQ4NGZkMzIyOTA5OTUxNTMyMDhiMTkzMWZhNS4uN2E3ODc1MjhmZTkzMjZjMGZkMjc0
OWZlNGM1MjE3NjI5MDIzODA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTc5
LDYgKzE3OSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSSBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IgXAogCVdl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJIFwKIAlXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaAppbmRleCA0NTdjMjYyMmFmMWFiZGEzZGZlNjM3NzBlMjcxNGQxMmY3Yzdj
NDhmLi4wMTViMDBhMmFjNGQ5OGM3MDgxNWY3YWMwMzVlOTBhZTc1MmRjOWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xMzYsNiArMTM2LDkgQEAgcHVibGljOgogICAg
ICAgICBHcmFtbWFyRGV0YWlsLAogICAgICAgICBJY29uRGF0YWJhc2UsCiAgICAgICAgIEluc3Bl
Y3RvciwKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgICAgIEluc3BlY3Rv
ckV4dGVuc2lvbiwKKyNlbmRpZgogICAgICAgICBLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAg
ICAgICBNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgTWVzc2FnZUxpc3RlbmVyLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDE3MzBiZDQ5M2ZkMGI0NmRlZWNj
MjQ3ZDdjMTgyY2Q2ODI4ZGE2MzEuLjVjZTEyY2Q3MjIyMjY0MDQxNzNhMWVlN2Q2YmYxNTBiMWY2
Mzc5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTk4LDYg
Kzk4LDEwIEBACiAjaW1wb3J0ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNlbmRpZgorCiBzdGF0aWMgY29uc3Qgc2l6ZV90
IG1pbmltdW1PYmplY3RBbGlnbm1lbnQgPSBhbGlnbm9mKHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+Ojp0eXBlKTsKIHN0YXRpY19hc3NlcnQo
bWluaW11bU9iamVjdEFsaWdubWVudCA+PSBhbGlnbm9mKHZvaWQqKSwgIk9iamVjdHMgc2hvdWxk
IGFsd2F5cyBiZSBhdCBsZWFzdCBwb2ludGVyLWFsaWduZWQuIik7CiBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1heGltdW1FeHRyYVNwYWNlRm9yQWxpZ25tZW50ID0gbWluaW11bU9iamVjdEFsaWdubWVu
dCAtIGFsaWdub2Yodm9pZCopOwpAQCAtMjY0LDcgKzI2OCwxMyBAQCB2b2lkKiBPYmplY3Q6Om5l
d09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZTo6SW5zcGVjdG9y
OgogICAgICAgICB3cmFwcGVyID0gW19XS0luc3BlY3RvciBhbGxvY107CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBjYXNl
IFR5cGU6Okluc3BlY3RvckV4dGVuc2lvbjoKKyAgICAgICAgd3JhcHBlciA9IFtfV0tJbnNwZWN0
b3JFeHRlbnNpb24gYWxsb2NdOworICAgICAgICBicmVhazsKKyNlbmRpZgorCiAgICAgY2FzZSBU
eXBlOjpOYXZpZ2F0aW9uOgogICAgICAgICB3cmFwcGVyID0gW1dLTmF2aWdhdGlvbiBhbGxvY107
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZGFmNWZiNzMxM2JkZDk4MDY4ZGVkZDM5
Y2JhYzRkZmJlOTM3N2NhOC4uNzE2ZThiMTFhNmQ5YWNiNTkzZjU2ZTlkNmNmYzE0OTBjZTAzMTM4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC0zNDIsNiArMzQyLDcgQEAgVUlQcm9jZXNzL0FQSS9BUElGcmFt
ZUluZm8uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lVHJlZU5vZGUuY3BwCiBVSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3Vs
dC5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcAogVUlQcm9jZXNz
L0FQSS9BUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbi5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCkBAIC00MzQsNiAr
NDM1LDcgQEAgVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCiBVSVByb2Nlc3MvSW5z
cGVjdG9yL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkuY3BwCitVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVdGlsaXRp
ZXMuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VEZWJ1Z2dhYmxlLmNwcAogVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU0Myw2ICs1
NDUsNyBAQCBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCiBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmNwcAog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCitXZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDk1NDViYjlmN2VhMjUyMzdhYTU1ZTk2OTFkNjI3ZTFhZWYyYjY3M2EuLmEy
ODQzMzA1OWVjM2QxY2NjZGFmMTY4NjNjMGU3MjI0YWRkODdlZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTI1Nyw2ICsyNTcsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0dlb2xvY2F0
aW9uUG9zaXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvcldp
bmRvdy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnRlcm5hbERlYnVnRmVhdHVyZS5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGZmNTUxNmZkMTI0NWIyM2Y3ZmU1N2NlNWQwNTdjMTczOTQxMWIyMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRl
bnNpb24uY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgQVBJIHsKKworUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9u
OjpjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xsZXIpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yRXh0ZW5zaW9uKGlkZW50aWZpZXIsIGV4
dGVuc2lvbkNvbnRyb2xsZXIpKTsKK30KKworSW5zcGVjdG9yRXh0ZW5zaW9uOjpJbnNwZWN0b3JF
eHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xsZXIpCisgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fZXh0ZW5zaW9uQ29udHJvbGxlciht
YWtlV2Vha1B0cihleHRlbnNpb25Db250cm9sbGVyKSkKK3sKK30KKworSW5zcGVjdG9yRXh0ZW5z
aW9uOjp+SW5zcGVjdG9yRXh0ZW5zaW9uKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDJhN2E0YzExYzVkOGQ4ZTVmNmQ5ZjBhOGY4MTg1ZDBiNTBhOTk3OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2Ns
YXNzIEluc3BlY3RvckV4dGVuc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8T2Jq
ZWN0OjpUeXBlOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PEluc3BlY3RvckV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVy
LCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CisgICAg
dmlydHVhbCB+SW5zcGVjdG9yRXh0ZW5zaW9uKCk7CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IEluc3BlY3RvckV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
ZmllciwgV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYpOwor
CisgICAgV1RGOjpTdHJpbmcgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4gbV9leHRlbnNpb25Db250cm9sbGVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yLmgKaW5kZXggMTg5OWU4MThiMzYzZTg1ZDQ2MGIzMDk3M2I0YWEwZDQ4ODk5NTk5
ZS4uODZiMWNmODk2Mjc4ZjE5NzJiOWE3OTk3YzQ5Mjc0ZDFlZWRjY2Y1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaApAQCAtMjUsMTcg
KzI1LDE1IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QuaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdLV2ViVmll
dzsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247
CiBAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRGVsZWdhdGU7CiAKLU5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCi0KLUBwcm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Ci0tICh2b2lkKWNsb3Nl
OwotQGVuZAotCiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkK
IEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yIDogTlNPYmplY3QgPF9XS0luc3BlY3RvckV4dGVuc2lv
bkhvc3Q+CiAKQEAgLTUyLDYgKzUwLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE0
LjQpLCBpb3MoMTIuMikpCiAKIC0gKHZvaWQpY29ubmVjdDsKIC0gKHZvaWQpc2hvdzsKKy0gKHZv
aWQpY2xvc2U7CiAtICh2b2lkKWhpZGU7CiAtICh2b2lkKXNob3dDb25zb2xlOwogLSAodm9pZClz
aG93UmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3IubW0KaW5kZXggNjczNDExZjMwZWYxZDEwOGUxZDQ0NDc0MTk0YmNjYThmOTNk
MWY2Yi4uN2QwNTE4OGZhZTJiZTNkZTU3MzUyOTMwODJmNDllODE4NjY1MDAzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0z
Nyw2ICszNywxNCBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW1w
b3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKKyNpbXBvcnQgIldLRXJyb3IuaCIKKyNpbXBv
cnQgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCisjaW1wb3J0ICJf
V0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CisjZW5kaWYKKwogQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvcgogCiAvLyBNQVJLOiBfV0tJ
bnNwZWN0b3IgbWV0aG9kcwpAQCAtMTk0LDQgKzIwMiwzOCBAQCAtIChBUEk6Ok9iamVjdCYpX2Fw
aU9iamVjdAogICAgIHJldHVybiAqX2luc3BlY3RvcjsKIH0KIAorLy8gTUFSSzogX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSG9zdCBtZXRob2RzCisKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRo
SUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxh
eU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JF
eHRlbnNpb24gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVy
RXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklE
ID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29s
IHN1Y2Nlc3MpIHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICBjYXB0dXJl
ZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJv
clVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0
b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVk
U2VsZi0+X2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkgcmV0YWluXSBhdXRvcmVs
ZWFzZV0pOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
Om5pbF0sIG5pbCk7CisjZW5kaWYKK30KKworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKyAgICBfaW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdp
c3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGJvb2wgc3VjY2VzcykgeworICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAg
ICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsKTsKKyAgICB9KTsKKyNlbHNl
CisgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKKyNlbmRpZgorfQorCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3JEZWxlZ2F0ZS5oCmluZGV4IDU1MjAxYzc4NmI4N2M2Y2Y3YzA5YjI3MDhjNzM3MTBj
NzQ5MjgwMWMuLjE0Nzk3ODcwOWZmZTAzNWQzZThkNWE2MmE2ZGU3ZjQyYWRhNGJiYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JEZWxlZ2F0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0
aW9uLmg+CiAKIEBjbGFzcyBfV0tJbnNwZWN0b3I7CitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uOwogCiBAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRGVsZWdhdGUgPE5TT2JqZWN0PgogQG9wdGlv
bmFsCkBAIC00MSw2ICs0Miw5IEBACiAgKi8KIC0gKHZvaWQpaW5zcGVjdG9yRGlkRGlzYWJsZUJy
b3dzZXJEb21haW46KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcjsKIAorLSAodm9pZClpbnNwZWN0
b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvciBkaWRTaG93VGFiOihOU1N0cmluZyAqKXRhYklE
IGZvckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopaW5zcGVjdG9yRXh0ZW5zaW9u
OworLSAodm9pZClpbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvciBkaWRIaWRlVGFi
OihOU1N0cmluZyAqKXRhYklEIGZvckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICop
aW5zcGVjdG9yRXh0ZW5zaW9uOworCiAvKiEgQGFic3RyYWN0IENhbGxlZCB3aGVuIHRoZSBfV0tJ
bnNwZWN0b3IgcmVxdWVzdHMgdG8gc2hvdyBhIHJlc291cmNlIGV4dGVybmFsbHkuIFRoaXMKICAg
ICBpcyB1c2VkIHRvIGRpc3BsYXkgZG9jdW1lbnRhdGlvbiBwYWdlcyBhbmQgdG8gc2hvdyBleHRl
cm5hbCBVUkxzIHRoYXQgYXJlIGxpbmtpZmllZC4KICAgICBAcGFyYW0gaW5zcGVjdG9yIHRoZSBh
c3NvY2lhdGVkIGluc3BlY3RvciBmb3Igd2hpY2ggYW4gZXh0ZXJuYWwgbmF2aWdhdGlvbiBzaG91
bGQgYmUgdHJpZ2dlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYWEwNDRhMDJm
YTA3ZmZiNjk3NGNmM2U0ZGU5MzVhNTVjZjRlNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTAs
MCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCitAaW50ZXJmYWNl
IF9XS0luc3BlY3RvckV4dGVuc2lvbiA6IE5TT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdCBO
U19VTkFWQUlMQUJMRTsKKworQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU1N0cmlu
ZyAqZXh0ZW5zaW9uSUQ7CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk1NzNiZjhjYzBhM2QxNGMyNTMwZWExZTY0ZDc2OTI1NzEw
NWRhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJu
YWwuaCIKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGltcGxlbWVudGF0aW9uIF9XS0lu
c3BlY3RvckV4dGVuc2lvbgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCist
IChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2V4dGVuc2lvbjsKK30K
KworLy8gTUFSSzogUHJvcGVydGllcy4KKworLSAoTlNTdHJpbmcgKilleHRlbnNpb25JRAorewor
ICAgIHJldHVybiBfZXh0ZW5zaW9uLT5pZGVudGlmaWVyKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSG9zdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGNjMTA5MTljODUzODQxODUz
ZTE5NGI3NmFlMWY0MjRhMDYyZTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CisKK0Bwcm90b2NvbCBfV0tJbnNwZWN0
b3JFeHRlbnNpb25Ib3N0CisKKy8qKgorICogQGFic3RyYWN0IFJlZ2lzdGVycyBhIFdlYiBFeHRl
bnNpb24gd2l0aCB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yLgorICogQHBhcmFtIGV4dGVu
c2lvbklEIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBleHRlbnNpb24uCisgKiBAcGFyYW0g
ZGlzcGxheU5hbWUgQSBsb2NhbGl6ZWQgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9uLgor
ICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gYmUg
Y2FsbGVkIHdoZW4gcmVnaXN0cmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgorICoKKyAqIFdlYiBF
eHRlbnNpb25zIGluIFdlYiBJbnNwZWN0b3IgYXJlIGFjdGl2ZSBhcyBzb29uIGFzIHRoZXkgYXJl
IHJlZ2lzdGVyZWQuCisgKi8KKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3Ry
aW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyoqCisgKiBAYWJz
dHJhY3QgVW5yZWdpc3RlcnMgYSBXZWIgRXh0ZW5zaW9uIHdpdGggdGhlIGFzc29jaWF0ZWQgV2Vi
IEluc3BlY3Rvci4KKyAqIEBwYXJhbSBleHRlbnNpb25JRCBBIHVuaXF1ZSBpZGVudGlmaWVyIGZv
ciB0aGUgZXh0ZW5zaW9uLgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0
aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdW5yZWdpc3RlcmluZyBzdWNjZWVkcyBvciBm
YWlscy4KKyAqCisgKiBVbnJlZ2lzdGVyaW5nIGFuIGV4dGVuc2lvbiB3aWxsIGF1dG9tYXRpY2Fs
bHkgY2xvc2UgYW55IGFzc29jaWF0ZWQgc2lkZWJhcnMvdGFicy4KKyAqLworLSAodm9pZCl1bnJl
Z2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRs
ZXI7CisKKy8qKgorICogQGFic3RyYWN0IENsb3NlcyB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVj
dG9yIGluc3RhbmNlLiBUaGlzIHdpbGwgY2F1c2UgYWxsCisgKiByZWdpc3RlcmVkIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbnMgdG8gYmUgdW5yZWdpc3RlcmVkIGFuZCBpbnZhbGlkYXRlZC4KKyAqLwor
LSAodm9pZCljbG9zZTsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MWZhZDMzNWJiZDg2NWEwOTQxYzBj
ZDA0YzU0YTQ5YTI1MjNhMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaApAQCAtMCwwICsx
LDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQgIkFQSUluc3BlY3Rv
ckV4dGVuc2lvbi5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRlbnNp
b24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tJbnNwZWN0b3JFeHRlbnNpb247Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwor
QGludGVyZmFjZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKCkgPFdLT2JqZWN0PiB7CitAcGFja2Fn
ZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4gX2V4dGVu
c2lvbjsKK30KKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyLmgKaW5kZXggNThiMTAyNzAzMjRlZTkxNzM5MzBmOGM3YWRlOGJmY2Q3Yzll
NDRlZS4uZmZiZjg5YzUxZWUxODUyZTIwNWNkMmM3MGQ3OTcyZjEzYjQyN2E4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgKQEAgLTI0LDYgKzI0LDcgQEAK
ICAqLwogCiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQv
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oPgogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIApA
QCAtNDMsNyArNDQsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS1JlbW90ZVdlYklu
c3BlY3RvckRlYnVnZ2FibGVUeXBlKSB7CiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIu
MyksIGlvcygxMC4zKSk7CiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMi4zKSwgaW9z
KDEwLjMpKQotQGludGVyZmFjZSBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciA6
IE5TT2JqZWN0CitAaW50ZXJmYWNlIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
IDogTlNPYmplY3QgPF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3Q+CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBhc3NpZ24pIGlkIDxfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRl
bGVnYXRlPiBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyLm1tCmluZGV4IDY2YmYyNGRmODI2ZGFhOGU3Mjg0MjQ4ZmQxYjcyOGNiNWViZmYzNDMu
LjUxOTdhNWY3MzVmZTcxZDI2Njg5MGJiYWExNTg2YmZjYzFjYmVlN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTM0LDYgKzM0LDE2IEBACiAj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVidWdn
YWJsZUluZm9JbnRlcm5hbC5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
I2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisjaW1wb3J0ICJXS0Vycm9yLmgiCisj
aW1wb3J0ICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgorI2ltcG9y
dCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgorI2VuZGlmCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIEBpbnRlcmZhY2UgX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKCkKIC0gKHZvaWQpc2VuZE1lc3NhZ2VU
b0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKIC0gKHZvaWQpY2xvc2VGcm9tRnJvbnRlbmQ7
CkBAIC0xNjgsNiArMTc4LDQyIEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdh
dGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU+KWRlbGVnYXRlCiAgICAgbV9yZW1v
dGVJbnNwZWN0b3JQcm94eS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoISFkZWxlZ2F0
ZSk7CiB9CiAKKy8vIE1BUks6IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcworCist
ICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRp
c3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJs
ZSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lz
dGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lv
bklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChi
b29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICBjYXB0
dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihB
UEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgp
LCBwcm90ZWN0ZWRTZWxmLT5tX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9s
bGVyKCkpKSByZXRhaW5dIGF1dG9yZWxlYXNlXSk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6
V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKKyNlbmRpZgorfQorCistICh2b2lk
KXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lvbiBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9u
SGFuZGxlcgoreworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX3JlbW90
ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3RlckV4dGVuc2lv
bihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wg
c3VjY2VzcykgeworICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGNhcHR1cmVk
QmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
VW5rbm93biB1c2VySW5mbzpuaWxdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwpOworICAgIH0pOworI2Vsc2UKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOworI2VuZGlmCit9CisKIEBlbmQK
IAorTlNfQVNTVU1FX05PTk5VTExfRU5ECisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVl
dC5oCmluZGV4IDA2ZjhmMWY3NjJlODk2ODZmYzVkYzNmYzg5MGYxM2UwYjM2M2QzMzMuLmU0Y2Y1
YTJkYzEwMmY1OTZkM2FlZmU4YzY0N2I2ZjVhYTliNzliMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCkBAIC0yOSw2
ICsyOSw3IEBACiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgX1dLVXNlckNvbnRl
bnRXb3JsZDsKK0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1VzZXJTdHlsZUxldmVsKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0K
aW5kZXggMDY4NDQxMmIxMzUxZjMwYTVkNDg0ZjkwOWQ3YTRiOTdhNzFjYTQyNi4uNzkxNWVhM2Iy
ZjY1ZGE0OGNmNGVhOTgyMDI1YTkzZTRlMThhN2ZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpAQCAtMjcsNiAr
MjcsNyBAQAogI2ltcG9ydCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogCiAjaW1wb3J0
ICJBUElBcnJheS5oIgorI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXS1dl
YlZpZXdJbnRlcm5hbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggZWMzMTBkOGEz
Mzg5MDVkMjZhOTQzZGRhNjE5N2YxMGUyOTJjODk5Zi4uNGM2ZjU0ZjBmM2NiYjBiMDMxZmNlNzZk
YjE3OTM1MTFiYTZhNmNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zNiw2ICsz
NiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmgi
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtMTc1LDYgKzE3OSwxMCBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVh
dGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpLCAqdGhp
cyk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFz
ZVVSTCgqbV9pbnNwZWN0b3JQYWdlLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVS
TCgpKTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lv
bkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5PigqbV9pbnNwZWN0b3JQYWdlKTsKKyNlbmRpZgogfQogCiB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5oCmluZGV4IGRlYmEwZmVlNjI1NjQ1NjI1ZDc2Mzk2YjJiMDY1YTIxMmJmOTM4MDguLjk0
ZjUzNTU0ZmExMDlhZGJkNzIxOTAyYzU0OGMyM2MwNWVhYmQ4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5oCkBAIC01NCw2ICs1NCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQ
YWdlUHJveHk7CiBjbGFzcyBXZWJWaWV3OworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OworI2VuZGlm
CiAKIGNsYXNzIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTg1
LDYgKzg4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisgICAgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNv
bnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9leHRlbnNpb25Db250cm9sbGVyOyB9CisjZW5k
aWYKKyAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgTlNXaW5kb3cgKndpbmRvdygpIGNvbnN0
IHsgcmV0dXJuIG1fd2luZG93LmdldCgpOyB9CiAgICAgV0tXZWJWaWV3ICp3ZWJWaWV3KCkgY29u
c3Q7CkBAIC0xNDYsNiArMTUzLDEwIEBAIHByaXZhdGU6CiAgICAgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFdlYlBhZ2VQcm94eSogbV9p
bnNwZWN0b3JQYWdlIHsgbnVsbHB0ciB9OwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eT4gbV9leHRlbnNpb25Db250cm9sbGVyOworI2VuZGlmCisgICAgCiAgICAgUmVmPEFQ
STo6RGVidWdnYWJsZUluZm8+IG1fZGVidWdnYWJsZUluZm87CiAgICAgU3RyaW5nIG1fYmFja2Vu
ZENvbW1hbmRzVVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBmMGY3YjJkZjVlNDE5MmFjNDU0OGI4
ZjdiY2I5OTdkMWYxMzBkNDYwLi4wODBiMTU4ZjAxZjdiZDk2YjEwMDE0NDE0ZDU1YzRjNzhjYTU2
YWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJJbnNw
ZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0
b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1
ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIK
ICNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIgpAQCAtNDIxLDYgKzQyMiwx
MCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2UoKQogCiAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2Ut
PmlkZW50aWZpZXIoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFz
c3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFnZSwgV2ViSW5zcGVjdG9yUHJv
eHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4oKm1faW5zcGVjdG9yUGFnZSk7CisjZW5kaWYKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9v
bCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQpAQCAtNTQ2LDYgKzU1MSwxMCBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAgICAgaWYgKG1f
aXNBdHRhY2hlZCkKICAgICAgICAgcGxhdGZvcm1EZXRhY2goKTsKIAorI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBudWxscHRyOwor
I2VuZGlmCisgICAgCiAgICAgLy8gTnVsbCBvdXQgbV9pbnNwZWN0b3JQYWdlIGFmdGVyIHBsYXRm
b3JtRGV0YWNoKCksIHNvIHRoZSB2aWV3cyBjYW4gYmUgY2xlYW5lZCB1cCBjb3JyZWN0bHkuCiAg
ICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKIApAQCAtNTcxLDYgKzU4MCwxMCBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCgpCiAKICAgICBpZiAoYXV0byogYXV0
b21hdGlvblNlc3Npb24gPSBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LmF1dG9tYXRpb25TZXNzaW9uKCkpCiAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT5pbnNwZWN0
b3JGcm9udGVuZExvYWRlZCgqbV9pbnNwZWN0ZWRQYWdlKTsKKyAgICAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5pbnNwZWN0b3JG
cm9udGVuZExvYWRlZCgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmJy
aW5nVG9Gcm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDE0ZDQ3N2U4ZDc5YTFjMzk3OWFjNWE4OTc2MGJj
M2RmMGY1ZTljODQuLmY1NTQxYmY3MDI4MTdlYmM4YmUzNjUyNWRhYzMwOWY4NjU0NThkZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JQcm94eS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JG
cm9udGVuZENsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02OSw2ICs3MCw5IEBAIGNsYXNz
IFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eUNsaWVudDsKIGNsYXNzIFdl
YlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2VzOworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
OworI2VuZGlmCiAKIGVudW0gY2xhc3MgQXR0YWNobWVudFNpZGUgewogICAgIEJvdHRvbSwKQEAg
LTgwLDYgKzg0LDcgQEAgY2xhc3MgV2ViSW5zcGVjdG9yUHJveHkKICAgICA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okluc3BlY3Rvcj4KICAgICAsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFu
bmVsCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViSW5zcGVjdG9yUHJveHk+CiAjaWYg
UExBVEZPUk0oV0lOKQogICAgICwgcHVibGljIFdlYkNvcmU6OldpbmRvd01lc3NhZ2VMaXN0ZW5l
cgogI2VuZGlmCkBAIC0xMDIsNiArMTA3LDEwIEBAIHB1YmxpYzoKICAgICBXZWJQYWdlUHJveHkq
IGluc3BlY3RlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RlZFBhZ2U7IH0KICAgICBX
ZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclBh
Z2U7IH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0
IHsgcmV0dXJuICptX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBp
c0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JQYWdlOyB9CiAgICAgYm9v
bCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQogICAgIGJvb2wgaXNG
cm9udCgpOwpAQCAtMjg2LDYgKzI5NSwxMCBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSog
bV9pbnNwZWN0b3JQYWdlIHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklu
c3BlY3RvckNsaWVudD4gbV9pbnNwZWN0b3JDbGllbnQ7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKKyAgICAKICAg
ICBib29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNWaXNpYmxlIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTkzMTUx
MmJkZDMwYTIwMzNhYTU0NWRlZmQzOTE2OWM3OWNkYTljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJveHkmIGluc3BlY3Rv
clBhZ2UpCisgICAgOiBtX2luc3BlY3RvclBhZ2UobWFrZVdlYWtQdHIoaW5zcGVjdG9yUGFnZSkp
Cit7Cit9CisKK1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp+V2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoKQoreworICAgIGlmICghbV9pbnNwZWN0
b3JQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRy
OworCisgICAgYXV0byBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fcXVldWVkRnJvbnRlbmRB
Y3Rpb25zLCB7IH0pOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAg
ICAgIGNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKG1fZnJvbnRlbmRMb2FkZWQgJiYgbV9pbnNwZWN0b3JQYWdlKSB7Cisg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3F1ZXVl
ZEZyb250ZW5kQWN0aW9ucy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjppbnNwZWN0b3JGcm9udGVuZExv
YWRlZCgpCit7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgCisgICAgbV9mcm9u
dGVuZExvYWRlZCA9IHRydWU7CisKKyAgICBhdXRvIGNhbGxiYWNrcyA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9xdWV1ZWRGcm9udGVuZEFjdGlvbnMsIHsgfSk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKworLy8gQVBJCisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4
dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdl
YWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHdlYWtU
aGlzLT5tX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVnaXN0ZXJFeHRlbnNpb24g
eyBleHRlbnNpb25JRCwgZGlzcGxheU5hbWUgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIH0pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4
dGVuc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5z
cGVjdG9yUGFnZSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpVbnJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0ZW5zaW9u
SUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjI2ZDgzZTliMmI5N2I3ZmEyNGE2YjFjNTQ2MWFiMWY1NzFjZGVkNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBh
Z2VQcm94eTsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkK
KyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVj
dG9yUGFnZSk7CisgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHkoKTsKKworICAgIC8vIEFQSS4KKyAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisKKyAgICAvLyBOb3RpZmljYXRpb25zLgorICAgIHZvaWQgaW5zcGVjdG9y
RnJvbnRlbmRMb2FkZWQoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCB3aGVuRnJvbnRlbmRI
YXNMb2FkZWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICAKKyAgICBXZWFrUHRyPFdlYlBhZ2VQ
cm94eT4gbV9pbnNwZWN0b3JQYWdlOworICAgIGJvb2wgbV9mcm9udGVuZExvYWRlZCB7IGZhbHNl
IH07CisKKyAgICAvLyBVc2VkIHRvIHF1ZXVlIGFjdGlvbnMgc3VjaCBhcyByZWdpc3RlcmluZyBl
eHRlbnNpb25zIHRoYXQgaGFwcGVuIGVhcmx5IG9uLgorICAgIC8vIFRoZXJlJ3Mgbm8gcG9pbnQg
c2VuZGluZyB0aGVzZSBiZWZvcmUgdGhlIGZyb250ZW5kIGlzIGZ1bGx5IGxvYWRlZC4KKyAgICBW
ZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9xdWV1ZWRGcm9udGVuZEFjdGlvbnM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGQ1Njc1MjkyNzA4NjdmM2M1MDdmMDM5ZGNmZWY4YWYxZTdhYzBmNWYuLjdmODJjMmQw
YmQyOWI5NmZlNDBlMjY4NzMzMDE0ZDU0ZTQwOWNlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQwOSw4ICsxNDA5LDE2IEBACiAJ
CTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYy
MUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLzsgfTsK
IAkJOTk1NUE2RjcxQzc5ODZFNTAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYz
MUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggKi87IH07CiAJ
CTk5Nzg4QUNCMUY0MjFEREEwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3Vy
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
Nzg4QUM5MUY0MjFEQ0EwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
OTc5NjU5NTI1MkZERjI4MDBCMzFBRTMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5NjU5NDI1MkZERjE2
MDBCMzFBRTMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi87IH07CisJCTk5Nzk2NTlFMjUz
MTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1
OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmggKi87IH07CisJCTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUz
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CisJCTk5Nzk2NUEzMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25Ib3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTc5NjVBMjI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5NzlDQTU4
MjM3RjQ5RjEwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUg
LyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk5OTk2QTlGMjUwMDRCQ0MwMDRGNzU1OSAvKiBfV0tJbnNwZWN0
b3JQcml2YXRlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk5OTZBOUQyNTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZh
dGVGb3JUZXN0aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTlCMTY3NTcyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3
NTQyNTJCQjdFMDAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5QjE2NzU4MjUyQkI3RTEw
MDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBF
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggKi87IH07CisJCTk5QjE2NzVCMjUy
QkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NUEy
NTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
LmggKi87IH07CisJCTk5QjE2NzY0MjUyQkJFNjIwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5QjE2NzYxMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJOTlDM0FFMkQxREFEQTZBRDAwQUY1QzE2IC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OUMzQUUyQzFEQURBNkE3MDBBRjVDMTYgLyogV2ViQXV0b21hdGlv
blNlc3Npb25NYWNyb3MuaCAqLzsgfTsKIAkJOTlDODFENUExQzIwRTdFMjAwNUM0QzgyIC8qIEF1
dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5QzgxRDU1MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi87
IH07CiAJCTk5QzgxRDVEMUMyMUYzOEIwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1QjFD
MjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovOyB9OwpAQCAtNDUwMCw5
ICs0NTA4LDIyIEBACiAJCTk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJv
dG9jb2xPYmplY3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF1dG9tYXRp
b25Qcm90b2NvbE9iamVjdHMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvQXV0b21h
dGlvblByb3RvY29sT2JqZWN0cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk5OTc4OEFDOTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25m
aWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRp
b25TZXNzaW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTc4OEFDQTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQXV0b21h
dGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OTc5NjU5MzI1MkZERjE2MDBCMzFBRTMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUluc3BlY3RvckV4dGVuc2lv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5Nzk2NTk0MjUyRkRGMTYwMEIz
MUFFMyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5Nzk2NTlBMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5OTc5NjU5QjI1MzEw
QTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTk5
Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1
IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLSW5zcGVjdG9yUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTk5NkE5RDI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3Rpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yUHJpdmF0ZUZv
clRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk5OTZBOUUyNTAwNEJD
QjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclRlc3RpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JUZXN0aW5nLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5OUIxNjc1NDI1MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3Rv
ckV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc1NTI1MkJC
N0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NTYyNTJCQjdFMTAwNzMxNDBFIC8q
IF9XS0luc3BlY3RvckV4dGVuc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTlCMTY3NUEyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk5QjE2NzVEMjUyQkJFMEEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzYwMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NjEyNTJCQkU2MTAwNzMxNDBFIC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NjIyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNBRTIzMURBRDhFMzQwMEFGNUMxNiAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OUMzQUUyNjFEQUQ5NDg1MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25D
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9t
YXRpb25TZXNzaW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNB
RTJDMURBREE2QTcwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI3NCwxNCArNzI5NSwxOCBAQAogCQkJ
CTM3QTY0RTU0MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRlLmggKi8sCiAJCQkJ
NUNBRkRFNDIyMTMwODQzNTAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oICovLAogCQkJCTVDQUZE
RTQzMjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3IubW0gKi8sCi0JCQkJOTkxRjQ5MkQy
M0E4MTJDNTAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLmggKi8sCi0JCQkJ
OTkxRjQ5MkUyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLm1t
ICovLAotCQkJCTk5MDM2QUUxMjNBOTQ5Q0UwMDAwQjA2QSAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dh
YmxlSW5mb0ludGVybmFsLmggKi8sCi0JCQkJOTE5Nzk0MEIyM0RCQzUwMzAwMjU3ODkyIC8qIF9X
S0luc3BlY3RvckRlbGVnYXRlLmggKi8sCiAJCQkJNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8q
IF9XS0luc3BlY3RvckludGVybmFsLmggKi8sCiAJCQkJOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1
IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCAqLywKIAkJCQk5OTk5NkE5RDI1MDA0QkNCMDA0Rjc1
NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCAqLywKIAkJCQk5OTk5NkE5RTI1
MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yVGVzdGluZy5tbSAqLywKKwkJCQk5OTFGNDky
RDIzQTgxMkM1MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uaCAqLywKKwkJ
CQk5OTFGNDkyRTIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8u
bW0gKi8sCisJCQkJOTkwMzZBRTEyM0E5NDlDRTAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVn
Z2FibGVJbmZvSW50ZXJuYWwuaCAqLywKKwkJCQk5MTk3OTQwQjIzREJDNTAzMDAyNTc4OTIgLyog
X1dLSW5zcGVjdG9yRGVsZWdhdGUuaCAqLywKKwkJCQk5OUIxNjc1NDI1MkJCN0UwMDA3MzE0MEUg
LyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi8sCisJCQkJOTlCMTY3NTYyNTJCQjdFMTAwNzMx
NDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5tbSAqLywKKwkJCQk5OUIxNjc1NTI1MkJCN0Ux
MDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLywKKwkJCQk5OTc5
NjVBMjI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oICovLAog
CQkJCUE1QzBGMEFBMjAwMDY1NkUwMDUzNjUzNiAvKiBfV0tJbnNwZWN0b3JXaW5kb3cuaCAqLywK
IAkJCQlBNUMwRjBBOTIwMDA2NTZFMDA1MzY1MzYgLyogX1dLSW5zcGVjdG9yV2luZG93Lm1tICov
LAogCQkJCTMxQjM2Mjk0MjE0MUVCQUQwMDdCRkE1MyAvKiBfV0tJbnRlcm5hbERlYnVnRmVhdHVy
ZS5oICovLApAQCAtODUyNiw2ICs4NTUxLDggQEAKIAkJCQlBNTVCQTgxQjFCQTI1QjFFMDA3Q0Qz
M0QgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwICovLAogCQkJCUE1NUJBODE5MUJBMjVC
MUUwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oICovLAogCQkJCUE1NUJBODFB
MUJBMjVCMUUwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAq
LywKKwkJCQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkuaCAqLywKKwkJCQk5OUIxNjc1RDI1MkJCRTBBMDA3MzE0MEUgLyog
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwICovLAogCQkJCTFDOEUy
ODMzMTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5jcHAgKi8sCiAJCQkJMUM4
RTI4MzIxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggKi8sCiAJCQkJMUM3
N0MxOTUxMjg4QTg3MjAwNkE3NDJGIC8qIFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICov
LApAQCAtODU5Myw2ICs4NjIwLDkgQEAKIAkJCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyog
V2ViSW5zcGVjdG9yVUkuY3BwICovLAogCQkJCTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBX
ZWJJbnNwZWN0b3JVSS5oICovLAogCQkJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJ
bnNwZWN0b3JVSS5tZXNzYWdlcy5pbiAqLywKKwkJCQk5OUIxNjc2MDI1MkJCRTYxMDA3MzE0MEUg
LyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCAqLywKKwkJCQk5OUIxNjc2
MTI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgg
Ki8sCisJCQkJOTlCMTY3NjIyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLywKIAkJCQlBNTQzRTMwQTIxNUM4QTg0MDAyNzlD
RDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAgKi8sCiAJCQkJQTU0M0UzMDgyMTVDOEE4
MzAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuaCAqLywKIAkJCQlBNTQzRTMwOTIx
NUM4QTgzMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwICov
LApAQCAtOTIwOSw2ICs5MjM5LDggQEAKIAkJCQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyog
QVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLywKIAkJCQk3QThBOUQ1NzFFRjExOUFBMDA5ODAxQUUg
LyogQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywKIAkJCQk5MTk3OTQwOTIzREJDNEUwMDAy
NTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xpZW50LmggKi8sCisJCQkJOTk3OTY1OTMyNTJGREYxNjAw
QjMxQUUzIC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAgKi8sCisJCQkJOTk3OTY1OTQyNTJG
REYxNjAwQjMxQUUzIC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5oICovLAogCQkJCTMxQjM2Mjkw
MjE0MUVBQkMwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAgKi8sCiAJCQkJ
MzFCMzYyOEUyMTQxRUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmggKi8s
CiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5
Q2xpZW50LmggKi8sCkBAIC0xMDI0MSw2ICsxMDI3Myw4IEBACiAJCQkJMUNBOEI5NDQxMjdDODgy
QTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLywKIAkJCQkxQ0JCRTQ5
RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LAogCQkJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2Vz
LmggKi8sCisJCQkJOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTk3OTY1OUEyNTMx
MEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2Vz
LmggKi8sCiAJCQkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1l
c3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMzFCQTkyNDgxNDg4MzA4MTAwNjJFREI1IC8qIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTMxQkE5MjQ5
MTQ4ODMwODEwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCAqLywK
QEAgLTEwNjUxLDYgKzEwNjg1LDcgQEAKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAwMEIwNkEgLyog
X1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTE5Nzk0MEMyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0FGREU0NzIxMzA4NDZBMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5Nzk2NTk1MjUyRkRGMjgwMEIzMUFFMyAvKiBB
UElJbnNwZWN0b3JFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NzlDQTU4MjM3RjQ5
RjEwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
OTk5NkE5RjI1MDA0QkNDMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3Rpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1QzBGMEFCMjAwMDY1ODIwMDUzNjUzNiAvKiBfV0tJbnNw
ZWN0b3JXaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAtMTA2NjEsNiArMTA2OTYsNyBAQAogCQkJ
CUExMThBOUYzMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUMwRjBBNzIwMDA2NTREMDA1MzY1MzYgLyogX1dLTlNXaW5kb3dF
eHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMjM2MTFFMUIwMTVEQTgwMEZBOTIzMiAvKiBf
V0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QjE2NzU4MjUy
QkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE0M0U4MkExODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4OUQyRDcxQTZDNkJFNjAwM0E1RkRF
IC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTlFMzI4RDE4MjE2NUE5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
LmggaW4gSGVhZGVycyAqLywKQEAgLTEwOTczLDYgKzExMDA5LDcgQEAKIAkJCQkxQUM0QzgyOTE2
Qjg3NkE5MDA2OURDQ0QgLyogTWVzc2FnZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNF
RUQxMjE2MUE1M0Q2MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTNFRUQwRjE2MUE1MzU0MDBBRUI0RjUgLyogTWVzc2FnZVJlY2VpdmVyTWFwLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5OUIxNjc2NDI1MkJCRTYyMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFCMDM3QTE4NUE3
QzZBMDBFREY1MDEgLyogTWVzc2FnZVNlbmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEzQjNE
QTIyMDdGMzlERTAwOTBDNThEIC8qIE1vYmlsZVdpRmlTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3RENFRENCMjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMTEyMzIsNiArMTEyNjksNyBAQAogCQkJCTQ2QkVCNkUzMjJGQkIy
MUEwMDI2OTg2NyAvKiBUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3RUIyRTNBMjFFMTk4M0UwMEI4OUNERiAvKiBVMmZBdXRoZW50aWNhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUZFNDM2NjE4QjZDMDgxMDA5QzdBNDggLyogVUlEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlCMTY3NTcyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0lu
c3BlY3RvckV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQjUxRDU5MTdGRjAw
REQ3QzY4IC8qIFVJR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1QkUxQTkxRDU1Mjkz
NDAwREQ3QzY4IC8qIFVJR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUU0
QUUyQjFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovLApAQCAtMTEy
OTcsNiArMTEzMzUsNyBAQAogCQkJCUY0MzBFOTQ0MjI0NzNERkYwMDVGRTA1MyAvKiBXZWJDb250
ZW50TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBNTA1RkExNjgwMDI1NTAwQTkzMEVCIC8q
IFdlYkNvbnRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDlCOEY5MTQ3NDYwRjcw
MDVGNTYyNSAvKiBXZWJDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOTk3OTY1QTMyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDREUwNTlCMTFDREE4QUUwMEU0MUFGMSAvKiBXZWJDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODcxQjVDMTI3
Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMw
MzJENzcxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTExNzE2LDYgKzExNzU1LDcgQEAKIAkJCQkzNzFBMTk0MjE4MjREMjkzMDBGMzJB
NUUgLyogV0tOU0RpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3MkNBRjBCMTgzM0ZE
OTEwMDQwQUMyNyAvKiBXS05TRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NUUwRTE0MUQ2
NjQzMjcwMEVGRUMyQyAvKiBXS05TTnVtYmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc1
QjI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OEUxQTRBMTgyMDhDRDYwMDMxMDA3QSAvKiBXS05T
U3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzhFMUE0RTE4MjA4RDcwMDAzMTAwN0EgLyog
V0tOU1VSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdGQzE5NEIxODUxMEQ2QTAwOENGQTQ3IC8q
IFdLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTcy
Myw2ICsxMTc2Myw3IEBACiAJCQkJMzdCRjJGMDYxOTQ3REVCNDAwNzIzQzQ4IC8qIFdLTlNVUkxS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwMjEyNEZGMDI3MDA2OEYyMEEgLyog
V0tOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQTdCM0Q1MjAyNkNGMjMwMDlDRTVBQyAv
KiBXS051bWJlclBhZFZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5Nzk2NTlFMjUzMTBBNDkw
MEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkVBN0IzRDEyMDI2Q0VGODAwOUNFNUFDIC8qIFdLTnVtYmVyUGFk
Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDVFQkI5MTc0NkExNUIwMDBD
MUM0NSAvKiBXS09iakNUeXBlV3JhcHBlclJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc4RTFB
NDAxODFFREEwMTAwMzEwMDdBIC8qIFdLT2JqZWN0LmggaW4gSGVhZGVycyAqLywKQEAgLTEzMDU2
LDYgKzEzMDk3LDcgQEAKIAkJCQkyRDU0QzMwODIxMkYzQjMzMDA0OUMxNzQgLyogVW5pZmllZFNv
dXJjZTYzLW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQxMUI3Q0QyMTI2QTI4MzAwNkY4ODc4
IC8qIFVuaWZpZWRTb3VyY2U2NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDU0QzMwQzIxMkYz
QjMzMDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTY0LW1tLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
OTk3OTY1OUYyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDU0QzMwNzIxMkYz
QjMzMDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTY1LW1tLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkQxMUI3Q0UyMTI2QTI4MzAwNkY4ODc4IC8qIFVuaWZpZWRTb3VyY2U2NS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyRDExQjdDRjIxMjZBMjgzMDA2Rjg4NzggLyogVW5pZmllZFNvdXJjZTY2LmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXIuY3BwCmluZGV4IDljMzdiMDAzYzFjYjc3MWQ5YjNmNzlkZGE2NTUyYTQ5MDdkN2VkZDcuLjNl
Y2FhZjhlODhkZjljMzMxZTAzNDhlZGE1MDM3NGE0ZjEwMjczMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKQEAgLTcwLDYgKzcwLDIyIEBAIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjp1bnN1c3BlbmQoKQogICAgIGV2YWx1
YXRlUXVldWVkRXhwcmVzc2lvbnMoKTsKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXI6OmRpc3BhdGNoQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIFZlY3Rv
cjxSZWY8SlNPTjo6VmFsdWU+PiYmIGFyZ3VtZW50cykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGV4
cHJlc3Npb247CisgICAgZXhwcmVzc2lvbi5hcHBlbmRMaXRlcmFsKCJJbnNwZWN0b3JGcm9udGVu
ZEFQSS5kaXNwYXRjaChbXCIiKTsKKyAgICBleHByZXNzaW9uLmFwcGVuZChjb21tYW5kKTsKKyAg
ICBleHByZXNzaW9uLmFwcGVuZExpdGVyYWwoIlwiIik7CisKKyAgICBmb3IgKGF1dG8mIGFyZ3Vt
ZW50IDogYXJndW1lbnRzKSB7CisgICAgICAgIGV4cHJlc3Npb24uYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKKyAgICAgICAgYXJndW1lbnQtPndyaXRlSlNPTihleHByZXNzaW9uKTsKKyAgICB9CisKKyAg
ICBleHByZXNzaW9uLmFwcGVuZExpdGVyYWwoIl0pIik7CisgICAgZXZhbHVhdGVPclF1ZXVlRXhw
cmVzc2lvbihleHByZXNzaW9uLnRvU3RyaW5nKCkpOworfQorCiB2b2lkIFdlYkluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFu
ZCkKIHsKICAgICBldmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKG1ha2VTdHJpbmcoIkluc3BlY3Rv
ckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNvbW1hbmQsICJcIl0pIikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmgKaW5kZXggZGI2OTBlNGE0MTYwN2FkZjEw
MzRjYjhlNDVhMGZiMGY1ZDY1ZmQ2OS4uOTY0M2UzZWNlZWVmMjlhYzMzOWJjMDA1NDZlOWIxNjhh
Y2Y3NDQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgor
I2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsNiArNDMsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCB1bnN1c3BlbmQoKTsKIAorICAgIHZvaWQgZGlzcGF0
Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+
JiYgYXJndW1lbnRzKTsKKyAgICAvLyBGSVhNRTogc3dpdGNoIGNhbGxlcnMgb2YgdGhlc2UgbWV0
aG9kcyBvdmVyIHRvIHRoZSBKU09OOjpWYWx1ZSBiYXNlZCB2ZXJzaW9uLgogICAgIHZvaWQgZGlz
cGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAgICAgdm9pZCBkaXNwYXRjaENv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KTsKICAg
ICB2b2lkIGRpc3BhdGNoQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgYXJndW1l
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJLmNwcAppbmRleCBkNzliZjhiYzdiZGE3MDBkZGVmNjI0MGVkZDQ5ZWIyNGQzNDcy
YWI0Li5iNDE2NGQ1MDJmNGNmMzkxOTMyZjY2ODgzMjFkNDVhNDg0M2U1YTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNw
cApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtNjUsNiArNjksOCBAQCBXZWJJbnNwZWN0b3JVSTo6V2ViSW5zcGVjdG9y
VUkoV2ViUGFnZSYgcGFnZSkKICAgICBXZWJJbnNwZWN0b3JVSTo6ZW5hYmxlRnJvbnRlbmRGZWF0
dXJlcygpOwogfQogCitXZWJJbnNwZWN0b3JVSTo6fldlYkluc3BlY3RvclVJKCkgPSBkZWZhdWx0
OworCiB2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGNvbnN0IERlYnVnZ2FibGVJbmZv
RGF0YSYgZGVidWdnYWJsZUluZm8sIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9u
TGV2ZWwpCiB7CiAgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyOwpAQCAtNzIsNiArNzgsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJs
aXNoQ29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGUKICAg
ICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKICAgICBtX2luc3BlY3Rpb25MZXZlbCA9IGluc3Bl
Y3Rpb25MZXZlbDsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4
dGVuc2lvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcj4oKnRoaXMpOworI2VuZGlmCisgICAgCiAgICAgbV9mcm9udGVuZEFQSURpc3BhdGNo
ZXIucmVzZXQoKTsKIAogICAgIG1fZnJvbnRlbmRDb250cm9sbGVyID0gJm1fcGFnZS5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CkBAIC0xNjUsNiArMTc1LDEwIEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKIAogICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIgPSB7IH07CiAgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKKyAgICAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbnVsbHB0cjsK
KyNlbmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpyZW9wZW4oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCmluZGV4IDAy
NmE3MTJhMDg5OWQwNDU1ZjMxODVhYjc5NzZjMTQwMDVkOGViYWIuLjg2N2Y1MjMxYjQ5YzJlMzdh
NzIwZjU2ZDI2ZWNlN2FmMDA1NWVlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKQEAgLTMxLDEwICszMSwxMSBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckRlYnVnZ2FibGVUeXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5z
cGVjdG9yQ29udHJvbGxlcjsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kSG9zdDsKIGNsYXNzIENl
cnRpZmljYXRlSW5mbzsKIGNsYXNzIEZsb2F0UmVjdDsKIH0KQEAgLTQyLDExICs0MywxOCBAQCBj
bGFzcyBGbG9hdFJlY3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitjbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKIAotY2xhc3MgV2ViSW5zcGVjdG9yVUkgOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJJbnNwZWN0b3JVST4sIHByaXZhdGUgSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7CitjbGFzcyBXZWJJ
bnNwZWN0b3JVSSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkluc3BlY3RvclVJPgorICAgICwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFdlYkluc3BlY3RvclVJPgorICAgICwgcHJpdmF0ZSBJUEM6OkNv
bm5lY3Rpb246OkNsaWVudAorICAgICwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYkluc3BlY3RvclVJPiBjcmVhdGUo
V2ViUGFnZSYpOwotCisgICAgfldlYkluc3BlY3RvclVJKCk7CisgICAgICAgIAogICAgIHN0YXRp
YyB2b2lkIGVuYWJsZUZyb250ZW5kRmVhdHVyZXMoKTsKIAogICAgIC8vIEltcGxlbWVudGVkIGlu
IGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAKQEAgLTE0OCw2ICsx
NTYsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV91bmRlclRlc3Q7IH0KIAorICAgIFdlYlBhZ2UmIGZyb250ZW5kUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZTsgfQorICAgIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciYg
ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgeyByZXR1cm4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7
IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSShXZWJQYWdlJik7CiAK
QEAgLTE1OSw2ICsxNzAsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBjb3JlUGFnZSgpLCBzaW5jZSB3
ZSBtYXkgbmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBwYWdlIGhhcyBzdGFydGVkIGRlc3Ry
dWN0aW9uLgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIG1fZnJvbnRlbmRDb250
cm9sbGVyIHsgbnVsbHB0ciB9OwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI+IG1f
ZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgorICAgIAogICAgIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBib29sIG1fdW5kZXJUZXN0IHsg
ZmFsc2UgfTsKICAgICBEZWJ1Z2dhYmxlSW5mb0RhdGEgbV9kZWJ1Z2dhYmxlSW5mbzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTIw
MzBjMjcyNzJlOGQ4ZWI5MGUxOGZiNDlmNTY5ZTE1YmFkYTY2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgi
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJXZWJJbnNw
ZWN0b3JVSS5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVz
c2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKFdlYkluc3BlY3RvclVJ
JiBpbnNwZWN0b3IpCisgICAgOiBtX2luc3BlY3RvcihtYWtlV2Vha1B0cihpbnNwZWN0b3IpKQor
eworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksICp0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworfQorCisvLyBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgorCit2b2lkIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBl
eHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9pbnNwZWN0
b3IpOworCisgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpTT046OlZh
bHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpLCBKU09OOjpWYWx1ZTo6Y3JlYXRlKGRpc3BsYXlOYW1l
KSB9OworICAgIG1faW5zcGVjdG9yLT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENv
bW1hbmQoInJlZ2lzdGVyRXh0ZW5zaW9uIiwgV1RGTW92ZShhcmd1bWVudHMpKTsKKworICAgIC8v
IEZJWE1FOiB1c2UgcmV0dXJuIHZhbHVlIG9mIHRoZSBldmFsdWF0aW9uIHRvIGRldGVybWluZSBp
ZiB3ZSBzdWNjZWVkZWQgb3IgZmFpbGVkLgorICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwor
fQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3RlckV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChtX2luc3BlY3Rvcik7
CisgICAgCisgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpTT046OlZh
bHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07CisgICAgbV9pbnNwZWN0b3ItPmZyb250ZW5kQVBJ
RGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZCgidW5yZWdpc3RlckV4dGVuc2lvbiIsIFdURk1v
dmUoYXJndW1lbnRzKSk7CisKKyAgICAvLyBGSVhNRTogdXNlIHJldHVybiB2YWx1ZSBvZiB0aGUg
ZXZhbHVhdGlvbiB0byBkZXRlcm1pbmUgaWYgd2Ugc3VjY2VlZGVkIG9yIGZhaWxlZC4KKyAgICBj
b21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzI1ZjAzYzYwOGQ5M2RiYTkzMzhk
MTVmNzQ3ZWMxMzZmMTYyOTZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUk7CisKK2NsYXNzIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlciA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoV2ViSW5zcGVjdG9yVUkmKTsKKyAgICB+
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKCk7CisKKyAgICAvLyBJbXBsZW1lbnRl
ZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICAvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcmVnaXN0ZXJFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOworCitwcml2YXRlOgorICAgIFdlYWtQdHI8V2ViSW5zcGVjdG9yVUk+IG1faW5zcGVjdG9y
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NzU3ODE2NTEzMzk4ZDhiNTA0NjVh
YzFmMDY3ZTE4MzcyN2FhZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdl
cy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisj
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK21lc3NhZ2VzIC0+IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBOb3RSZWZDb3VudGVkIHsKKyAgICBSZWdp
c3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmluZyBkaXNwbGF5TmFtZSkgLT4g
KGJvb2wgc3VjY2VzcykgQXN5bmMKKyAgICBVbnJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRl
bnNpb25JRCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKK30KKworI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zTWFj
LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKaW5kZXggYTI3NTQ5NWJhNTJl
N2FlYzFlNTU1NTJjOTJlMTZkYzQ3MWQ3YzNlNC4uZTlkZGNkOWU4NDY3MTNjYmJjMzMxODRiYjgx
NjU5YzU5ODFhMTY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UK
KysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKQEAgLTUwLDYgKzUwLDcgQEAgV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOREVYRURfREFUQUJBU0UgUFJJ
VkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFX0lOX1dPUktFUlMgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSUyBQUklWQVRFIE9OKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0lOU1BFQ1RPUl9FWFRFTlNJT05TIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfSU5TUEVDVE9SX1RFTEVNRVRSWSBQUklWQVRFIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUiBQ
UklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0xBWU9V
VF9GT1JNQVRUSU5HX0NPTlRFWFQgUFJJVkFURSBPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFr
ZQppbmRleCBhMmZmNTNkZDYyMWM1ZmM0NzcwYWMyZDc4MzE2ZWI1ZThjOWIwMzg2Li44MDE2MmZh
ZTgyZDIwY2RmN2ZlYTQ3ZDhjYTkxZTVlZTMxYmU0N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVz
LmNtYWtlCkBAIC0xNTEsNiArMTUxLDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAg
ICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQRV9USU1FICJUb2dnbGUgSW5w
dXQgVHlwZSBUaW1lIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVG
SU5FKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgIlRvZ2dsZSBJbnB1dCBUeXBlIFdlZWsgc3VwcG9y
dCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlMgIlRvZ2dsZSBpbnNwZWN0b3IgYWx0ZXJuYXRlIGRpc3Bh
dGNoZXJzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQorICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVO
QUJMRV9JTlNQRUNUT1JfRVhURU5TSU9OUyAiVG9nZ2xlIGluc3BlY3RvciB3ZWIgZXh0ZW5zaW9u
cyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
SU5TUEVDVE9SX1RFTEVNRVRSWSAiVG9nZ2xlIGluc3BlY3RvciB0ZWxlbWV0cnkgc3VwcG9ydCIg
UFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOVEVSU0VDVElP
Tl9PQlNFUlZFUiAiRW5hYmxlIEludGVyc2VjdGlvbiBPYnNlcnZlciBzdXBwb3J0IiBQUklWQVRF
IE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMg
IlRvZ2dsZSBpT1MgZ2VzdHVyZSBldmVudHMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCmRpZmYgLS1n
aXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYTRhZWYzOWRhZDY1ODEzODA0ZWRjMTZj
NzQ1NDEwZDM2NDQzODBjZC4uNTg3NjQ3OWUzNzY1ZTk5NGYyZjE0NjhlOGFkYWZhZWRiMjQwYTYw
NCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIwLTEwLTE1ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtD
b2NvYV0gSW5zcGVjdG9yIEV4dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5k
IHJlbGF0ZWQgcGx1bWJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvT3B0aW9uc01hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVy
ZXMuY21ha2U6CisgICAgICAgIEFkZCBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpLCB3aGlj
aCBpcyBvbmx5IG9uIGZvciB0aGUgQ29jb2EgbWFjT1MgcG9ydC4KKwogMjAyMC0xMC0xNCAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEFDQ0VM
RVJBVEVEXzJEX0NBTlZBUyBidWlsZCBmbGFncyBhbmQgZ3VhcmRlZCBjb2RlCg==
</data>
<flag name="commit-queue"
          id="427703"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411493</attachid>
            <date>2020-10-15 14:56:13 -0700</date>
            <delta_ts>2020-10-16 11:35:10 -0700</delta_ts>
            <desc>Patch v1.1</desc>
            <filename>bug-217783-20201015145612.patch</filename>
            <type>text/plain</type>
            <size>94342</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJiOTYzMGEyMjFkZmUxMDllYjZhMDA2
YzRkNDViMTBlOTJiNDJhYTkuLjk3NjQ1OGNkNWNjYjZkOTM3Yzc3ZGUxNDlhMzU3MjA1NjkzNDky
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMTUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9X
S0luc3BlY3RvckV4dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82OTk2ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmg6CisgICAgICAgIEFkZCBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
LCB3aGljaCBpcyBvbmx5IG9uIGZvciB0aGUgQ29jb2EgbWFjT1MgcG9ydC4KKwogMjAyMC0xMC0x
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IERpc2FsbG93IHBvcnRzIGluIGZpbGUgVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXgg
YWE2Y2NmN2UyYzJjNTNiNWY3YWVkMDZkZjBlZmFhMzQ3NTUwMTFjYS4uYjM0YTI3ZGNhYTU4ZjU4
Y2U4MzYxZDU2MDI0NjNjZTQwMWVkMThmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMjAtMTAtMTUgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9XS0luc3BlY3RvckV4
dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTk2
ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOiBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qczoKKyAgICAgICAgKFdJ
LkFwcENvbnRyb2xsZXJCYXNlKToKKyAgICAgICAgKFdJLkFwcENvbnRyb2xsZXJCYXNlLnByb3Rv
dHlwZS5nZXQgZXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIEhhbmcgdGhlIGV4dGVuc2lv
biBjb250cm9sbGVyIG9mZiBvZiB0aGUgZ2xvYmFsIHNpbmdsZXRvbiwgYXMgdGhlcmUgY2FuIG9u
bHkgYmUgb25lLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJFeHRl
bnNpb25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuV2ViRXh0ZW5zaW9uQ29udHJvbGxlcik6
CisgICAgICAgIChXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckV4
dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS51
bnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIEZvciBub3csIGp1c3Qga2VlcCB0
aGUgVVVJRHMgaW4gYSBtYXAgYW5kIGxvZyB0aGUgcmVzdWx0LgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Nb2RlbHMvV2ViRXh0ZW5zaW9uLmpzOgorICAgICAgICAoV0kuV2ViRXh0ZW5zaW9u
KToKKyAgICAgICAgKFdJLldlYkV4dGVuc2lvbi5wcm90b3R5cGUuZ2V0IGV4dGVuc2lvbklEKToK
KyAgICAgICAgKFdJLldlYkV4dGVuc2lvbi5wcm90b3R5cGUuZ2V0IGRpc3BsYXlOYW1lKToKKyAg
ICAgICAgQWRkZWQuIFRoaXMgaXMgYSBkYXRhIG9iamVjdCBmb3Igbm93LgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAgICAg
KEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21wbGV0ZWQpOgorICAgICAgICAoSW5zcGVjdG9y
RnJvbnRlbmRBUEkucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRl
bmRBUEkudW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3J3YXJkIGludm9j
YXRpb25zIHRvIHRoZSBleHRlbnNpb24gY29udHJvbGxlci4KKwogMjAyMC0xMC0xNCAgRGV2aW4g
Um91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVH
UkVTU0lPTihyMjY3MTQ4KTogbmV3IEJpZyBTdXIgc3R5bGVzIGFyZSBub3QgdXNlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBhZjk2ZjRhOTkzYjliMGU0MDQ3Yzc5MWJiOGMyMTAxMDNjOWI1ZmM1Li4wNmNhZjZiOGYy
MjU4YzQzNTNiMTljNTY0ZWUzOTZmNzNlMGEwODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBA
QAorMjAyMC0xMC0xNSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBb
Q29jb2FdIEluc3BlY3RvciBFeHRlbnNpb25zOiBBZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFu
ZCByZWxhdGVkIHBsdW1iaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTc3ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5OTY4Nzg3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiBpcyBuZXcgU1BJIHRoYXQgcmVwcmVzZW50cyBhIFdlYiBFeHRlbnNpb24gdGhh
dCB1c2VzIHRoZSAnZGV2dG9vbHMnCisgICAgICAgIEFQSSB0byBpbnRlcmFjdCB3aXRoIFdlYiBJ
bnNwZWN0b3IuIEFuIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkIHdpdGggaXRzIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkhvc3QuCisgICAgICAgIEEgV2ViS2l0IGNsaWVudCB0aGF0IHN1cHBvcnRzIFdl
YiBFeHRlbnNpb25zIGNhbiB1c2UgdGhpcyBjbGFzcyB0byBpbXBsZW1lbnQgJ2RldnRvb2xzJyBl
eHRlbnNpb24gQVBJcy4KKworICAgICAgICBBZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBt
ZXRob2RzIHRvIHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyIGFuIGV4dGVuc2lvbi4KKyAgICAgICAg
QWRkIHBsdW1iaW5nIHNvIHRoYXQgdGhlIGV4dGVuc2lvbiBpbiByZWdpc3RlcmVkIGluIHRoZSBm
cm9udGVuZCB3aXRoIFdJLldlYkV4dGVuc2lvbkNvbnRyb2xsZXIuCisKKyAgICAgICAgTGF0ZXIg
cGF0Y2hlcyB3aWxsIGZsZXNoIG91dCB0aGUgbmVlZGVkIGZ1bmN0aW9uYWxpdHkgdG8gaW1wbGVt
ZW50IHJlc3Qgb2YgdGhlICdkZXZ0b29scycgQVBJLgorCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgTmV3
IEFQSSBvYmplY3QgdHlwZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZSk6CisgICAg
ICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6SW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAg
ICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjp+SW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAg
ICAgQWRkZWQuIFRoaXMgaXMgYSBwbGFjZWhvbGRlciBvYmplY3QgdGhhdCdzIHVzZWQgZm9yIHRo
ZSB3cmFwcGVyIHN5c3RlbSwKKyAgICAgICAgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBzaW5nbGUgQysr
IG9iamVjdHMgZm9yIGVhY2ggZXh0ZW5zaW9uIHRvIGJhY2sgdGhlIEFQSSBvYmplY3QuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0
b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICBJbXBsZW1lbnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lv
bkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8gdGhlIEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06Cisg
ICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBfYXBpT2JqZWN0XSk6CisgICAgICAgICgt
W19XS0luc3BlY3RvckV4dGVuc2lvbiBleHRlbnNpb25JRF0pOgorICAgICAgICBBZGRlZC4gVGhp
cyBpcyBhIGRhdGEgb2JqZWN0IHRoYXQncyBhbHNvIHVzZWQgYXMgYSB0b2tlbiB0byB1bnJlZ2lz
dGVyIHRoZSBleHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckV4dGVuc2lvbkhvc3QuaDogQWRkIG5ldyBTUEkuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB1
bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBJbXBsZW1l
bnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8gdGhl
IEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5z
cGVjdG9yUHJveHk6OmV4dGVuc2lvbkNvbnRyb2xsZXIgY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93
KToKKyAgICAgICAgU2V0IHVwIHRoZSBleHRlbnNpb24gY29udHJvbGxlciBvYmplY3QgYWZ0ZXIg
dGhlIGZyb250ZW5kIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIFNldCB1cCB0aGUg
ZXh0ZW5zaW9uIGNvbnRyb2xsZXIgb2JqZWN0IGFmdGVyIHRoZSBmcm9udGVuZCBoYXMgYmVlbiBj
cmVhdGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZXh0ZW5zaW9uQ29udHJv
bGxlciBjb25zdCk6IEFkZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6On5XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp3aGVuRnJvbnRlbmRIYXNMb2FkZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdp
c3RlckV4dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3J3YXJkIEFQSSByZXF1ZXN0cyB0byB0
aGUgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzIHRvIGJlIGV2YWx1YXRlZCBpbiB0aGUgZnJv
bnRlbmQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmRpc3BhdGNoQ29tbWFuZCk6CisgICAgICAg
IEFkZCBhIG1vcmUgZ2VuZXJpYyB3YXkgdG8gZW5jb2RlIHZhbHVlcyB0byBiZSBwYXNzZWQgYXMg
YXJndW1lbnRzIHRvIEluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6
OmZyb250ZW5kUGFnZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSTo6ZnJvbnRlbmRBUElEaXNwYXRjaGVyKTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJF
eHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICBIYW5kbGUgaW5jb21pbmcgbWVz
c2FnZXMgYnkgZm9yd2FyZGluZyB0aGUgYXNzb2NpYXRlZCBjb21tYW5kIHRvIFdJLldlYkV4dGVu
c2lvbkNvbnRyb2xsZXIKKyAgICAgICAgdmlhIEluc3BlY3RvckZyb250ZW5kQVBJIGV2YWx1YXRp
b25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06Cisg
ICAgICAgIEZhbGxvdXQgZnJvbSB1bmlmaWVkIGJ1aWxkIGNodW5raW5nIHNoaWZ0cy4KKwogMjAy
MC0xMC0xNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W21hY09TXSBJc3N1ZSBzYW5kYm94IGV4dGVuc2lvbiB0byBhZGRpdGlvbmFsIGljb24gc2Vydmlj
ZSB3aGVuIGF0dGFjaG1lbnQgZWxlbWVudCBpcyBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
LmgKaW5kZXggNjU5NmYxMjljMWNiNzVlOWEwMmUwMDMxMDdjZDNkNmZhOTJkN2E2Mi4uMmNiMjBl
ZDU4YzhjYmIyNTgzYWM5MzA0MjkxN2E1ZjFhMTBjZTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZS5oCkBAIC0zMjgsNiArMzI4LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJO
QVRFX0RJU1BBVENIRVJTIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0lOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0VYVEVOU0lPTlMgMAorI2Vu
ZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SX1RFTEVNRVRSWSkKICNkZWZpbmUg
RU5BQkxFX0lOU1BFQ1RPUl9URUxFTUVUUlkgMAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVu
YWJsZUNvY29hLmgKaW5kZXggY2RkOTliN2Y5NDI4ZGUxMWE0ZDFmODk2NzQxMDY1MzhlNjQ1NjQ1
ZS4uNzYzOGVjODk3ZTJmMzlkYzQ5MmQ0NDZiNDhmMjZlNDBjZTQxYWE1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtMjcyLDYgKzI3MiwxMCBAQAogI2RlZmluZSBFTkFC
TEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyAxCiAjZW5kaWYKIAorI2lmICFkZWZp
bmVkKEVOQUJMRV9JTlNQRUNUT1JfRVhURU5TSU9OUykgJiYgUExBVEZPUk0oTUFDKQorI2RlZmlu
ZSBFTkFCTEVfSU5TUEVDVE9SX0VYVEVOU0lPTlMgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChF
TkFCTEVfSU5TUEVDVE9SX1RFTEVNRVRSWSkKICNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUl9URUxF
TUVUUlkgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzCmlu
ZGV4IDYxZDRjNDU5NDRkYjY2OTU1ZDAwMDk3M2EzZTZkZWEzYWU2NmVhNTYuLjk2ZGZiMGU2NmVm
MTUxODExMjY0ODFkYTMxY2IxOTQxNGVmMzE1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENv
bnRyb2xsZXJCYXNlLmpzCkBAIC00MSwxMSArNDEsMTQgQEAgV0kuQXBwQ29udHJvbGxlckJhc2Ug
PSBjbGFzcyBBcHBDb250cm9sbGVyQmFzZQogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2luaXRpYWxpemVkID0gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9u
Q29udHJvbGxlciA9IG5ldyBXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyOwogICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IGRlYnVnZ2FibGVUeXBlKCkgeyB0aHJvdyBXSS5Ob3RJbXBs
ZW1lbnRlZEVycm9yLnN1YmNsYXNzTXVzdE92ZXJyaWRlKCk7IH0KKyAgICBnZXQgZXh0ZW5zaW9u
Q29udHJvbGxlcigpIHsgcmV0dXJuIHRoaXMuX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KIAogICAg
IC8vIFNpbmNlIHZhcmlvdXMgbWVtYmVycyBvZiB0aGUgYXBwIGNvbnRyb2xsZXIgZGVwZW5kIG9u
IHRoZSBnbG9iYWwgc2luZ2xldG9uIHRvIGV4aXN0LAogICAgIC8vIHNvbWUgaW5pdGlhbGl6YXRp
b24gbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHRoZSBhcHAgY29udHJvbGxlciBoYXMgYmVlbiBjb25z
dHJ1Y3RlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1dlYkV4dGVuc2lvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJFeHRlbnNpb25Db250cm9sbGVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZmMDhjMjg5YzA4MmJjNThjZjQ3M2RlYTM4OTVlNWVkNmY0YjA1ODUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9XZWJFeHRlbnNpb25Db250cm9sbGVyLmpzCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyID0gY2xhc3MgV2ViRXh0ZW5zaW9uQ29u
dHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9ucyA9IG5ldyBNYXA7Cisg
ICAgfQorCisgICAgcmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2V4dGVuc2lvbnMuaGFzKGV4dGVuc2lvbklEKSkgewor
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiVW5hYmxlIHRvIHJlZ2lzdGVyIGV4dGVuc2lvbiwg
aXQncyBhbHJlYWR5IHJlZ2lzdGVyZWQ6ICIsIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgZXh0ZW5zaW9uID0g
bmV3IFdJLldlYkV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOworICAgICAgICB0
aGlzLl9leHRlbnNpb25zLnNldChleHRlbnNpb25JRCwgZXh0ZW5zaW9uKTsKKworICAgICAgICBj
b25zb2xlLmxvZygiUmVnaXN0ZXJlZCBleHRlbnNpb246ICIsIGV4dGVuc2lvbklELCBkaXNwbGF5
TmFtZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLldlYkV4dGVu
c2lvbkNvbnRyb2xsZXIuRXZlbnQuRXh0ZW5zaW9uQWRkZWQsIHtleHRlbnNpb259KTsKKyAgICB9
CisKKyAgICB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklEKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9leHRlbnNpb25zLmhhcyhleHRlbnNpb25JRCkpIHsKKyAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoIlVuYWJsZSB0byB1bnJlZ2lzdGVyIGV4dGVuc2lvbiB3aXRoIHVua25vd24g
SUQ6ICIsIGV4dGVuc2lvbklEKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGxldCBleHRlbnNpb24gPSB0aGlzLl9leHRlbnNpb25zLmdldChleHRlbnNpb25JRCk7
CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbnMuZGVsZXRlKGV4dGVuc2lvbklEKTsKKworICAgICAg
ICBjb25zb2xlLmxvZygiVW5yZWdpc3RlcmVkIGV4dGVuc2lvbjogIiwgZXh0ZW5zaW9uSUQpOwor
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5XZWJFeHRlbnNpb25Db250
cm9sbGVyLkV2ZW50LkV4dGVuc2lvblJlbW92ZWQsIHtleHRlbnNpb259KTsKKyAgICB9Cit9Owor
CitXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50ID0geworICAgIEV4dGVuc2lvbkFkZGVk
OiAiZXh0ZW5zaW9uLWFkZGVkIiwKKyAgICBFeHRlbnNpb25SZW1vdmVkOiAiZXh0ZW5zaW9uLXJl
bW92ZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCmluZGV4IGU0MWEwOGFlZTExNWE5NDdmNDQxNGRjY2E1NTMyZGQ1ODdkZWFlMjMuLmVkMmY3
ZTljNjQyZjAxMzRhY2RkYjE0OWM1YzIxZWU5MGNkZjM1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTQ4Niw2ICs0ODYsNyBAQAogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvVHlwZURlc2NyaXB0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL1R5cGVTZXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvVVJMQnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9XZWJFeHRlbnNpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
V2ViU29ja2V0UmVzb3VyY2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
V3JhcHBlZFByb21pc2UuanMiPjwvc2NyaXB0PgogCkBAIC04ODgsNiArODg5LDcgQEAKICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvSEFSQnVpbGRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0hlYXBNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvSW5kZXhlZERCTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1dlYkV4dGVuc2lvbkNvbnRyb2xsZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmlld0NvbnRy
b2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9KYXZhU2Ny
aXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkNvbnRyb2xsZXJzL0xheWVyVHJlZU1hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkV4dGVuc2lv
bi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJFeHRl
bnNpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg1ZWJjYzc0YzU4MTkzNGVkNDU0NDZiYzQzM2M0YmQ3Njk1
YzJjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9XZWJFeHRlbnNpb24uanMKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1dJLldlYkV4dGVuc2lvbiA9IGNsYXNzIFdlYkV4dGVuc2lvbiBleHRlbmRzIFdJLk9iamVjdAor
eworICAgIGNvbnN0cnVjdG9yKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGV4dGVuc2lvbklE
ID09PSAic3RyaW5nIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBkaXNwbGF5TmFt
ZSA9PT0gInN0cmluZyIpOworCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbklEID0gZXh0ZW5zaW9u
SUQ7CisgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7CisgICAgfQorCisg
ICAgLy8gUHVibGljCisgICAgZ2V0IGV4dGVuc2lvbklEKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5z
aW9uSUQ7IH0KKyAgICBnZXQgZGlzcGxheU5hbWUoKSB7IHJldHVybiB0aGlzLl9kaXNwbGF5TmFt
ZTsgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMWQx
ZjI4OGJiODM0ZDQ4MmY2NGUzOWVmMGZiZDUzODZkODc0ZGVmMC4uNzNmMTc5NzdjMTUxMmU0OTFm
NmJiYzRhZTM4NWI2NDE4Y2RjYTAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRl
bmRBUEkuanMKQEAgLTE5Niw1ICsxOTYsMTUgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChJbnNwZWN0b3JGcm9udGVu
ZEFQSS5fcGVuZGluZ0NvbW1hbmRzW2ldKTsKIAogICAgICAgICBkZWxldGUgSW5zcGVjdG9yRnJv
bnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kczsKKyAgICB9LAorCisgICAgcmVnaXN0ZXJFeHRlbnNp
b246IGZ1bmN0aW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAgIFdJ
LnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVyLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lv
bklELCBkaXNwbGF5TmFtZSk7CisgICAgfSwKKworICAgIHVucmVnaXN0ZXJFeHRlbnNpb246IGZ1
bmN0aW9uKGV4dGVuc2lvbklEKQorICAgIHsKKyAgICAgICAgV0kuc2hhcmVkQXBwLmV4dGVuc2lv
bkNvbnRyb2xsZXIudW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCk7CiAgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2
ODQ1Y2U4YmQ0MGY2NzFjMzI0YjliMjUyNGQ5Yzc0ZGVkZjAxMWEwLi4zZjJmYjQxYTIzMDc0M2Vj
NGFiNjIwN2UxMWM3MzNiZjY0YTg3YWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05NSw2ICs5NSw3IEBAICQoUFJPSkVDVF9ESVIpL1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIp
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmlu
CiskKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xl
Z2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMzYsNiArMTM3
LDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HZW9sb2Nh
dGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4K
KyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CmluZGV4IDQ3Y2RmZTBlNjdkN2Q4ZWUyZGRiOGE1Y2VlOGI2NjcwODdiZjk2N2Eu
LjQ3ZDRiMWQwYzY0NzhkZDBjZTZkMmY3Y2MwZTk2ZjJiMjdmMTRjYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzI5LDYgKzMyOSw5
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQkNv
bm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzUmVwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdl
cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJT
ZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJ
bnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hl
ck1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNTEwYzc5
ODVjNTg3ZDQ4NGZkMzIyOTA5OTUxNTMyMDhiMTkzMWZhNS4uN2E3ODc1MjhmZTkzMjZjMGZkMjc0
OWZlNGM1MjE3NjI5MDIzODA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTc5
LDYgKzE3OSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSSBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IgXAogCVdl
YlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJIFwKIAlXZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaAppbmRleCA0NTdjMjYyMmFmMWFiZGEzZGZlNjM3NzBlMjcxNGQxMmY3Yzdj
NDhmLi4wMTViMDBhMmFjNGQ5OGM3MDgxNWY3YWMwMzVlOTBhZTc1MmRjOWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xMzYsNiArMTM2LDkgQEAgcHVibGljOgogICAg
ICAgICBHcmFtbWFyRGV0YWlsLAogICAgICAgICBJY29uRGF0YWJhc2UsCiAgICAgICAgIEluc3Bl
Y3RvciwKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgICAgIEluc3BlY3Rv
ckV4dGVuc2lvbiwKKyNlbmRpZgogICAgICAgICBLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAg
ICAgICBNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgTWVzc2FnZUxpc3RlbmVyLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDE3MzBiZDQ5M2ZkMGI0NmRlZWNj
MjQ3ZDdjMTgyY2Q2ODI4ZGE2MzEuLjVjZTEyY2Q3MjIyMjY0MDQxNzNhMWVlN2Q2YmYxNTBiMWY2
Mzc5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTk4LDYg
Kzk4LDEwIEBACiAjaW1wb3J0ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCIKICNl
bmRpZgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNlbmRpZgorCiBzdGF0aWMgY29uc3Qgc2l6ZV90
IG1pbmltdW1PYmplY3RBbGlnbm1lbnQgPSBhbGlnbm9mKHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHN0
ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+Ojp0eXBlKTsKIHN0YXRpY19hc3NlcnQo
bWluaW11bU9iamVjdEFsaWdubWVudCA+PSBhbGlnbm9mKHZvaWQqKSwgIk9iamVjdHMgc2hvdWxk
IGFsd2F5cyBiZSBhdCBsZWFzdCBwb2ludGVyLWFsaWduZWQuIik7CiBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1heGltdW1FeHRyYVNwYWNlRm9yQWxpZ25tZW50ID0gbWluaW11bU9iamVjdEFsaWdubWVu
dCAtIGFsaWdub2Yodm9pZCopOwpAQCAtMjY0LDcgKzI2OCwxMyBAQCB2b2lkKiBPYmplY3Q6Om5l
d09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZTo6SW5zcGVjdG9y
OgogICAgICAgICB3cmFwcGVyID0gW19XS0luc3BlY3RvciBhbGxvY107CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBjYXNl
IFR5cGU6Okluc3BlY3RvckV4dGVuc2lvbjoKKyAgICAgICAgd3JhcHBlciA9IFtfV0tJbnNwZWN0
b3JFeHRlbnNpb24gYWxsb2NdOworICAgICAgICBicmVhazsKKyNlbmRpZgorCiAgICAgY2FzZSBU
eXBlOjpOYXZpZ2F0aW9uOgogICAgICAgICB3cmFwcGVyID0gW1dLTmF2aWdhdGlvbiBhbGxvY107
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZGFmNWZiNzMxM2JkZDk4MDY4ZGVkZDM5
Y2JhYzRkZmJlOTM3N2NhOC4uNzE2ZThiMTFhNmQ5YWNiNTkzZjU2ZTlkNmNmYzE0OTBjZTAzMTM4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC0zNDIsNiArMzQyLDcgQEAgVUlQcm9jZXNzL0FQSS9BUElGcmFt
ZUluZm8uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lVHJlZU5vZGUuY3BwCiBVSVByb2Nlc3Mv
QVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSGl0VGVzdFJlc3Vs
dC5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcAogVUlQcm9jZXNz
L0FQSS9BUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbi5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkRhdGEuY3BwCkBAIC00MzQsNiAr
NDM1LDcgQEAgVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCiBVSVByb2Nlc3MvSW5z
cGVjdG9yL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
UHJveHkuY3BwCitVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVdGlsaXRp
ZXMuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VEZWJ1Z2dhYmxlLmNwcAogVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU0Myw2ICs1
NDUsNyBAQCBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCiBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmNwcAog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCitXZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDk1NDViYjlmN2VhMjUyMzdhYTU1ZTk2OTFkNjI3ZTFhZWYyYjY3M2EuLmEy
ODQzMzA1OWVjM2QxY2NjZGFmMTY4NjNjMGU3MjI0YWRkODdlZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTI1Nyw2ICsyNTcsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0dlb2xvY2F0
aW9uUG9zaXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvcldp
bmRvdy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnRlcm5hbERlYnVnRmVhdHVyZS5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGZmNTUxNmZkMTI0NWIyM2Y3ZmU1N2NlNWQwNTdjMTczOTQxMWIyMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRl
bnNpb24uY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgQVBJIHsKKworUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gSW5zcGVjdG9yRXh0ZW5zaW9u
OjpjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xsZXIpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yRXh0ZW5zaW9uKGlkZW50aWZpZXIsIGV4
dGVuc2lvbkNvbnRyb2xsZXIpKTsKK30KKworSW5zcGVjdG9yRXh0ZW5zaW9uOjpJbnNwZWN0b3JF
eHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xsZXIpCisgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fZXh0ZW5zaW9uQ29udHJvbGxlciht
YWtlV2Vha1B0cihleHRlbnNpb25Db250cm9sbGVyKSkKK3sKK30KKworSW5zcGVjdG9yRXh0ZW5z
aW9uOjp+SW5zcGVjdG9yRXh0ZW5zaW9uKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDJhN2E0YzExYzVkOGQ4ZTVmNmQ5ZjBhOGY4MTg1ZDBiNTBhOTk3OQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2Ns
YXNzIEluc3BlY3RvckV4dGVuc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8T2Jq
ZWN0OjpUeXBlOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PEluc3BlY3RvckV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVy
LCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CisgICAg
dmlydHVhbCB+SW5zcGVjdG9yRXh0ZW5zaW9uKCk7CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IEluc3BlY3RvckV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
ZmllciwgV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYpOwor
CisgICAgV1RGOjpTdHJpbmcgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4gbV9leHRlbnNpb25Db250cm9sbGVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yLmgKaW5kZXggMTg5OWU4MThiMzYzZTg1ZDQ2MGIzMDk3M2I0YWEwZDQ4ODk5NTk5
ZS4uODZiMWNmODk2Mjc4ZjE5NzJiOWE3OTk3YzQ5Mjc0ZDFlZWRjY2Y1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaApAQCAtMjUsMTcg
KzI1LDE1IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QuaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdLV2ViVmll
dzsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247
CiBAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRGVsZWdhdGU7CiAKLU5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCi0KLUBwcm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Ci0tICh2b2lkKWNsb3Nl
OwotQGVuZAotCiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkK
IEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yIDogTlNPYmplY3QgPF9XS0luc3BlY3RvckV4dGVuc2lv
bkhvc3Q+CiAKQEAgLTUyLDYgKzUwLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE0
LjQpLCBpb3MoMTIuMikpCiAKIC0gKHZvaWQpY29ubmVjdDsKIC0gKHZvaWQpc2hvdzsKKy0gKHZv
aWQpY2xvc2U7CiAtICh2b2lkKWhpZGU7CiAtICh2b2lkKXNob3dDb25zb2xlOwogLSAodm9pZClz
aG93UmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3IubW0KaW5kZXggNjczNDExZjMwZWYxZDEwOGUxZDQ0NDc0MTk0YmNjYThmOTNk
MWY2Yi4uNDQ1ZWExOTk4YzUyMmJjZGIwMjRkOWEwNDY3ZDhjMzhkYmQzMDFhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogCiAjaW1wb3J0
ICJJbnNwZWN0b3JEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCkBAIC0zNyw2ICszOCwxMyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCisjaW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKKyNpbXBv
cnQgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCisjaW1wb3J0ICJf
V0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CisjZW5kaWYKKwogQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvcgogCiAvLyBNQVJLOiBfV0tJ
bnNwZWN0b3IgbWV0aG9kcwpAQCAtMTk0LDQgKzIwMiwzOCBAQCAtIChBUEk6Ok9iamVjdCYpX2Fw
aU9iamVjdAogICAgIHJldHVybiAqX2luc3BlY3RvcjsKIH0KIAorLy8gTUFSSzogX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSG9zdCBtZXRob2RzCisKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRo
SUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxh
eU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JF
eHRlbnNpb24gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVy
RXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklE
ID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29s
IHN1Y2Nlc3MpIHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICBjYXB0dXJl
ZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJv
clVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0
b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVk
U2VsZi0+X2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkgcmV0YWluXSBhdXRvcmVs
ZWFzZV0pOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
Om5pbF0sIG5pbCk7CisjZW5kaWYKK30KKworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKyAgICBfaW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdp
c3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGJvb2wgc3VjY2VzcykgeworICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAg
ICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsKTsKKyAgICB9KTsKKyNlbHNl
CisgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JE
b21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKKyNlbmRpZgorfQorCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3JEZWxlZ2F0ZS5oCmluZGV4IDU1MjAxYzc4NmI4N2M2Y2Y3YzA5YjI3MDhjNzM3MTBj
NzQ5MjgwMWMuLjE0Nzk3ODcwOWZmZTAzNWQzZThkNWE2MmE2ZGU3ZjQyYWRhNGJiYjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JEZWxlZ2F0ZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0
aW9uLmg+CiAKIEBjbGFzcyBfV0tJbnNwZWN0b3I7CitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uOwogCiBAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRGVsZWdhdGUgPE5TT2JqZWN0PgogQG9wdGlv
bmFsCkBAIC00MSw2ICs0Miw5IEBACiAgKi8KIC0gKHZvaWQpaW5zcGVjdG9yRGlkRGlzYWJsZUJy
b3dzZXJEb21haW46KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcjsKIAorLSAodm9pZClpbnNwZWN0
b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvciBkaWRTaG93VGFiOihOU1N0cmluZyAqKXRhYklE
IGZvckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopaW5zcGVjdG9yRXh0ZW5zaW9u
OworLSAodm9pZClpbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvciBkaWRIaWRlVGFi
OihOU1N0cmluZyAqKXRhYklEIGZvckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICop
aW5zcGVjdG9yRXh0ZW5zaW9uOworCiAvKiEgQGFic3RyYWN0IENhbGxlZCB3aGVuIHRoZSBfV0tJ
bnNwZWN0b3IgcmVxdWVzdHMgdG8gc2hvdyBhIHJlc291cmNlIGV4dGVybmFsbHkuIFRoaXMKICAg
ICBpcyB1c2VkIHRvIGRpc3BsYXkgZG9jdW1lbnRhdGlvbiBwYWdlcyBhbmQgdG8gc2hvdyBleHRl
cm5hbCBVUkxzIHRoYXQgYXJlIGxpbmtpZmllZC4KICAgICBAcGFyYW0gaW5zcGVjdG9yIHRoZSBh
c3NvY2lhdGVkIGluc3BlY3RvciBmb3Igd2hpY2ggYW4gZXh0ZXJuYWwgbmF2aWdhdGlvbiBzaG91
bGQgYmUgdHJpZ2dlcmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYWEwNDRhMDJm
YTA3ZmZiNjk3NGNmM2U0ZGU5MzVhNTVjZjRlNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTAs
MCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCitAaW50ZXJmYWNl
IF9XS0luc3BlY3RvckV4dGVuc2lvbiA6IE5TT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdCBO
U19VTkFWQUlMQUJMRTsKKworQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU1N0cmlu
ZyAqZXh0ZW5zaW9uSUQ7CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRl
bnNpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk1NzNiZjhjYzBhM2QxNGMyNTMwZWExZTY0ZDc2OTI1NzEw
NWRhZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJu
YWwuaCIKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGltcGxlbWVudGF0aW9uIF9XS0lu
c3BlY3RvckV4dGVuc2lvbgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCist
IChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2V4dGVuc2lvbjsKK30K
KworLy8gTUFSSzogUHJvcGVydGllcy4KKworLSAoTlNTdHJpbmcgKilleHRlbnNpb25JRAorewor
ICAgIHJldHVybiBfZXh0ZW5zaW9uLT5pZGVudGlmaWVyKCk7Cit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSG9zdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMGNjMTA5MTljODUzODQxODUz
ZTE5NGI3NmFlMWY0MjRhMDYyZTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaApAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CisKK0Bwcm90b2NvbCBfV0tJbnNwZWN0
b3JFeHRlbnNpb25Ib3N0CisKKy8qKgorICogQGFic3RyYWN0IFJlZ2lzdGVycyBhIFdlYiBFeHRl
bnNpb24gd2l0aCB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yLgorICogQHBhcmFtIGV4dGVu
c2lvbklEIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBleHRlbnNpb24uCisgKiBAcGFyYW0g
ZGlzcGxheU5hbWUgQSBsb2NhbGl6ZWQgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9uLgor
ICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gYmUg
Y2FsbGVkIHdoZW4gcmVnaXN0cmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgorICoKKyAqIFdlYiBF
eHRlbnNpb25zIGluIFdlYiBJbnNwZWN0b3IgYXJlIGFjdGl2ZSBhcyBzb29uIGFzIHRoZXkgYXJl
IHJlZ2lzdGVyZWQuCisgKi8KKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3Ry
aW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyoqCisgKiBAYWJz
dHJhY3QgVW5yZWdpc3RlcnMgYSBXZWIgRXh0ZW5zaW9uIHdpdGggdGhlIGFzc29jaWF0ZWQgV2Vi
IEluc3BlY3Rvci4KKyAqIEBwYXJhbSBleHRlbnNpb25JRCBBIHVuaXF1ZSBpZGVudGlmaWVyIGZv
ciB0aGUgZXh0ZW5zaW9uLgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0
aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdW5yZWdpc3RlcmluZyBzdWNjZWVkcyBvciBm
YWlscy4KKyAqCisgKiBVbnJlZ2lzdGVyaW5nIGFuIGV4dGVuc2lvbiB3aWxsIGF1dG9tYXRpY2Fs
bHkgY2xvc2UgYW55IGFzc29jaWF0ZWQgc2lkZWJhcnMvdGFicy4KKyAqLworLSAodm9pZCl1bnJl
Z2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRs
ZXI7CisKKy8qKgorICogQGFic3RyYWN0IENsb3NlcyB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVj
dG9yIGluc3RhbmNlLiBUaGlzIHdpbGwgY2F1c2UgYWxsCisgKiByZWdpc3RlcmVkIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbnMgdG8gYmUgdW5yZWdpc3RlcmVkIGFuZCBpbnZhbGlkYXRlZC4KKyAqLwor
LSAodm9pZCljbG9zZTsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4MWZhZDMzNWJiZDg2NWEwOTQxYzBj
ZDA0YzU0YTQ5YTI1MjNhMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaApAQCAtMCwwICsx
LDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQgIkFQSUluc3BlY3Rv
ckV4dGVuc2lvbi5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRlbnNp
b24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tJbnNwZWN0b3JFeHRlbnNpb247Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwor
QGludGVyZmFjZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKCkgPFdLT2JqZWN0PiB7CitAcGFja2Fn
ZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4gX2V4dGVu
c2lvbjsKK30KKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyLmgKaW5kZXggNThiMTAyNzAzMjRlZTkxNzM5MzBmOGM3YWRlOGJmY2Q3Yzll
NDRlZS4uZmZiZjg5YzUxZWUxODUyZTIwNWNkMmM3MGQ3OTcyZjEzYjQyN2E4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgKQEAgLTI0LDYgKzI0LDcgQEAK
ICAqLwogCiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQv
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oPgogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIApA
QCAtNDMsNyArNDQsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS1JlbW90ZVdlYklu
c3BlY3RvckRlYnVnZ2FibGVUeXBlKSB7CiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIu
MyksIGlvcygxMC4zKSk7CiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMi4zKSwgaW9z
KDEwLjMpKQotQGludGVyZmFjZSBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciA6
IE5TT2JqZWN0CitAaW50ZXJmYWNlIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
IDogTlNPYmplY3QgPF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3Q+CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBhc3NpZ24pIGlkIDxfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRl
bGVnYXRlPiBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyLm1tCmluZGV4IDY2YmYyNGRmODI2ZGFhOGU3Mjg0MjQ4ZmQxYjcyOGNiNWViZmYzNDMu
LjUxOTdhNWY3MzVmZTcxZDI2Njg5MGJiYWExNTg2YmZjYzFjYmVlN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTM0LDYgKzM0LDE2IEBACiAj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVidWdn
YWJsZUluZm9JbnRlcm5hbC5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
I2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisjaW1wb3J0ICJXS0Vycm9yLmgiCisj
aW1wb3J0ICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgorI2ltcG9y
dCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0
ci5oPgorI2VuZGlmCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIEBpbnRlcmZhY2UgX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKCkKIC0gKHZvaWQpc2VuZE1lc3NhZ2VU
b0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKIC0gKHZvaWQpY2xvc2VGcm9tRnJvbnRlbmQ7
CkBAIC0xNjgsNiArMTc4LDQyIEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdh
dGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU+KWRlbGVnYXRlCiAgICAgbV9yZW1v
dGVJbnNwZWN0b3JQcm94eS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoISFkZWxlZ2F0
ZSk7CiB9CiAKKy8vIE1BUks6IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcworCist
ICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRp
c3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJs
ZSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lz
dGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lv
bklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChi
b29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICBjYXB0
dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihB
UEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgp
LCBwcm90ZWN0ZWRTZWxmLT5tX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9s
bGVyKCkpKSByZXRhaW5dIGF1dG9yZWxlYXNlXSk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6
V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKKyNlbmRpZgorfQorCistICh2b2lk
KXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lvbiBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICogX051bGxhYmxlKSljb21wbGV0aW9u
SGFuZGxlcgoreworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX3JlbW90
ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3RlckV4dGVuc2lv
bihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
LCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wg
c3VjY2VzcykgeworICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGNhcHR1cmVk
QmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
VW5rbm93biB1c2VySW5mbzpuaWxdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwpOworICAgIH0pOworI2Vsc2UKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOworI2VuZGlmCit9CisKIEBlbmQK
IAorTlNfQVNTVU1FX05PTk5VTExfRU5ECisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVl
dC5oCmluZGV4IDA2ZjhmMWY3NjJlODk2ODZmYzVkYzNmYzg5MGYxM2UwYjM2M2QzMzMuLmU0Y2Y1
YTJkYzEwMmY1OTZkM2FlZmU4YzY0N2I2ZjVhYTliNzliMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCkBAIC0yOSw2
ICsyOSw3IEBACiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgX1dLVXNlckNvbnRl
bnRXb3JsZDsKK0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1VzZXJTdHlsZUxldmVsKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0K
aW5kZXggMDY4NDQxMmIxMzUxZjMwYTVkNDg0ZjkwOWQ3YTRiOTdhNzFjYTQyNi4uNzkxNWVhM2Iy
ZjY1ZGE0OGNmNGVhOTgyMDI1YTkzZTRlMThhN2ZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpAQCAtMjcsNiAr
MjcsNyBAQAogI2ltcG9ydCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogCiAjaW1wb3J0
ICJBUElBcnJheS5oIgorI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXS1dl
YlZpZXdJbnRlcm5hbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggZWMzMTBkOGEz
Mzg5MDVkMjZhOTQzZGRhNjE5N2YxMGUyOTJjODk5Zi4uNGM2ZjU0ZjBmM2NiYjBiMDMxZmNlNzZk
YjE3OTM1MTFiYTZhNmNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zNiw2ICsz
NiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmgi
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtMTc1LDYgKzE3OSwxMCBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVh
dGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBhZ2UtPndlYlBhZ2VJRCgpLCAqdGhp
cyk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFz
ZVVSTCgqbV9pbnNwZWN0b3JQYWdlLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVS
TCgpKTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lv
bkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5PigqbV9pbnNwZWN0b3JQYWdlKTsKKyNlbmRpZgogfQogCiB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5oCmluZGV4IGRlYmEwZmVlNjI1NjQ1NjI1ZDc2Mzk2YjJiMDY1YTIxMmJmOTM4MDguLjk0
ZjUzNTU0ZmExMDlhZGJkNzIxOTAyYzU0OGMyM2MwNWVhYmQ4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5oCkBAIC01NCw2ICs1NCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQ
YWdlUHJveHk7CiBjbGFzcyBXZWJWaWV3OworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OworI2VuZGlm
CiAKIGNsYXNzIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTg1
LDYgKzg4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisgICAgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNv
bnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9leHRlbnNpb25Db250cm9sbGVyOyB9CisjZW5k
aWYKKyAgICAKICNpZiBQTEFURk9STShNQUMpCiAgICAgTlNXaW5kb3cgKndpbmRvdygpIGNvbnN0
IHsgcmV0dXJuIG1fd2luZG93LmdldCgpOyB9CiAgICAgV0tXZWJWaWV3ICp3ZWJWaWV3KCkgY29u
c3Q7CkBAIC0xNDYsNiArMTUzLDEwIEBAIHByaXZhdGU6CiAgICAgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFdlYlBhZ2VQcm94eSogbV9p
bnNwZWN0b3JQYWdlIHsgbnVsbHB0ciB9OwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eT4gbV9leHRlbnNpb25Db250cm9sbGVyOworI2VuZGlmCisgICAgCiAgICAgUmVmPEFQ
STo6RGVidWdnYWJsZUluZm8+IG1fZGVidWdnYWJsZUluZm87CiAgICAgU3RyaW5nIG1fYmFja2Vu
ZENvbW1hbmRzVVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBmMGY3YjJkZjVlNDE5MmFjNDU0OGI4
ZjdiY2I5OTdkMWYxMzBkNDYwLi4wODBiMTU4ZjAxZjdiZDk2YjEwMDE0NDE0ZDU1YzRjNzhjYTU2
YWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJJbnNw
ZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0
b3JNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCIKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgogI2luY2x1
ZGUgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIK
ICNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIgpAQCAtNDIxLDYgKzQyMiwx
MCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2UoKQogCiAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2Ut
PmlkZW50aWZpZXIoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFz
c3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFnZSwgV2ViSW5zcGVjdG9yUHJv
eHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4oKm1faW5zcGVjdG9yUGFnZSk7CisjZW5kaWYKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9v
bCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXN0KQpAQCAtNTQ2LDYgKzU1MSwxMCBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAgICAgaWYgKG1f
aXNBdHRhY2hlZCkKICAgICAgICAgcGxhdGZvcm1EZXRhY2goKTsKIAorI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBudWxscHRyOwor
I2VuZGlmCisgICAgCiAgICAgLy8gTnVsbCBvdXQgbV9pbnNwZWN0b3JQYWdlIGFmdGVyIHBsYXRm
b3JtRGV0YWNoKCksIHNvIHRoZSB2aWV3cyBjYW4gYmUgY2xlYW5lZCB1cCBjb3JyZWN0bHkuCiAg
ICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKIApAQCAtNTcxLDYgKzU4MCwxMCBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCgpCiAKICAgICBpZiAoYXV0byogYXV0
b21hdGlvblNlc3Npb24gPSBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LmF1dG9tYXRpb25TZXNzaW9uKCkpCiAgICAgICAgIGF1dG9tYXRpb25TZXNzaW9uLT5pbnNwZWN0
b3JGcm9udGVuZExvYWRlZCgqbV9pbnNwZWN0ZWRQYWdlKTsKKyAgICAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5pbnNwZWN0b3JG
cm9udGVuZExvYWRlZCgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmJy
aW5nVG9Gcm9udCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IDE0ZDQ3N2U4ZDc5YTFjMzk3OWFjNWE4OTc2MGJj
M2RmMGY1ZTljODQuLmY1NTQxYmY3MDI4MTdlYmM4YmUzNjUyNWRhYzMwOWY4NjU0NThkZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JQcm94eS5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JG
cm9udGVuZENsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC02OSw2ICs3MCw5IEBAIGNsYXNz
IFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eUNsaWVudDsKIGNsYXNzIFdl
YlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByZWZlcmVuY2VzOworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
OworI2VuZGlmCiAKIGVudW0gY2xhc3MgQXR0YWNobWVudFNpZGUgewogICAgIEJvdHRvbSwKQEAg
LTgwLDYgKzg0LDcgQEAgY2xhc3MgV2ViSW5zcGVjdG9yUHJveHkKICAgICA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Okluc3BlY3Rvcj4KICAgICAsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgICwgcHVibGljIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFu
bmVsCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViSW5zcGVjdG9yUHJveHk+CiAjaWYg
UExBVEZPUk0oV0lOKQogICAgICwgcHVibGljIFdlYkNvcmU6OldpbmRvd01lc3NhZ2VMaXN0ZW5l
cgogI2VuZGlmCkBAIC0xMDIsNiArMTA3LDEwIEBAIHB1YmxpYzoKICAgICBXZWJQYWdlUHJveHkq
IGluc3BlY3RlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RlZFBhZ2U7IH0KICAgICBX
ZWJQYWdlUHJveHkqIGluc3BlY3RvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvclBh
Z2U7IH0KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0
IHsgcmV0dXJuICptX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBp
c0Nvbm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbnNwZWN0b3JQYWdlOyB9CiAgICAgYm9v
bCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzaWJsZTsgfQogICAgIGJvb2wgaXNG
cm9udCgpOwpAQCAtMjg2LDYgKzI5NSwxMCBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSog
bV9pbnNwZWN0b3JQYWdlIHsgbnVsbHB0ciB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklu
c3BlY3RvckNsaWVudD4gbV9pbnNwZWN0b3JDbGllbnQ7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKKyAgICAKICAg
ICBib29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNWaXNpYmxlIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTkzMTUx
MmJkZDMwYTIwMzNhYTU0NWRlZmQzOTE2OWM3OWNkYTljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJveHkmIGluc3BlY3Rv
clBhZ2UpCisgICAgOiBtX2luc3BlY3RvclBhZ2UobWFrZVdlYWtQdHIoaW5zcGVjdG9yUGFnZSkp
Cit7Cit9CisKK1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp+V2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoKQoreworICAgIGlmICghbV9pbnNwZWN0
b3JQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRy
OworCisgICAgYXV0byBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fcXVldWVkRnJvbnRlbmRB
Y3Rpb25zLCB7IH0pOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAg
ICAgIGNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKG1fZnJvbnRlbmRMb2FkZWQgJiYgbV9pbnNwZWN0b3JQYWdlKSB7Cisg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3F1ZXVl
ZEZyb250ZW5kQWN0aW9ucy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjppbnNwZWN0b3JGcm9udGVuZExv
YWRlZCgpCit7CisgICAgQVNTRVJUKG1faW5zcGVjdG9yUGFnZSk7CisgICAgCisgICAgbV9mcm9u
dGVuZExvYWRlZCA9IHRydWU7CisKKyAgICBhdXRvIGNhbGxiYWNrcyA9IHN0ZDo6ZXhjaGFuZ2Uo
bV9xdWV1ZWRGcm9udGVuZEFjdGlvbnMsIHsgfSk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6
IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKworLy8gQVBJCisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4
dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdl
YWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHdlYWtU
aGlzLT5tX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVnaXN0ZXJFeHRlbnNpb24g
eyBleHRlbnNpb25JRCwgZGlzcGxheU5hbWUgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIH0pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4
dGVuc2lvbklELCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5z
cGVjdG9yUGFnZSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpVbnJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0ZW5zaW9u
SUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjI2ZDgzZTliMmI5N2I3ZmEyNGE2YjFjNTQ2MWFiMWY1NzFjZGVkNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBh
Z2VQcm94eTsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkK
KyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVj
dG9yUGFnZSk7CisgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHkoKTsKKworICAgIC8vIEFQSS4KKyAgICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisKKyAgICAvLyBOb3RpZmljYXRpb25zLgorICAgIHZvaWQgaW5zcGVjdG9y
RnJvbnRlbmRMb2FkZWQoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCB3aGVuRnJvbnRlbmRI
YXNMb2FkZWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICAKKyAgICBXZWFrUHRyPFdlYlBhZ2VQ
cm94eT4gbV9pbnNwZWN0b3JQYWdlOworICAgIGJvb2wgbV9mcm9udGVuZExvYWRlZCB7IGZhbHNl
IH07CisKKyAgICAvLyBVc2VkIHRvIHF1ZXVlIGFjdGlvbnMgc3VjaCBhcyByZWdpc3RlcmluZyBl
eHRlbnNpb25zIHRoYXQgaGFwcGVuIGVhcmx5IG9uLgorICAgIC8vIFRoZXJlJ3Mgbm8gcG9pbnQg
c2VuZGluZyB0aGVzZSBiZWZvcmUgdGhlIGZyb250ZW5kIGlzIGZ1bGx5IGxvYWRlZC4KKyAgICBW
ZWN0b3I8RnVuY3Rpb248dm9pZCgpPj4gbV9xdWV1ZWRGcm9udGVuZEFjdGlvbnM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGQ1Njc1MjkyNzA4NjdmM2M1MDdmMDM5ZGNmZWY4YWYxZTdhYzBmNWYuLmVlNTcyZDJj
ZDhmYzBkMzE0Y2ZmMmY2MmQ5MWViMDc0YWY0OWNlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQwOSw4ICsxNDA5LDE2IEBACiAJ
CTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYy
MUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLzsgfTsK
IAkJOTk1NUE2RjcxQzc5ODZFNTAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYz
MUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggKi87IH07CiAJ
CTk5Nzg4QUNCMUY0MjFEREEwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3Vy
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
Nzg4QUM5MUY0MjFEQ0EwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
OTc5NjU5NTI1MkZERjI4MDBCMzFBRTMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5NjU5NDI1MkZERjE2
MDBCMzFBRTMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi87IH07CisJCTk5Nzk2NTlFMjUz
MTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1
OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmggKi87IH07CisJCTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUz
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CisJCTk5Nzk2NUEzMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25Ib3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTc5NjVBMjI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5NzlDQTU4
MjM3RjQ5RjEwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUg
LyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk5OTk2QTlGMjUwMDRCQ0MwMDRGNzU1OSAvKiBfV0tJbnNwZWN0
b3JQcml2YXRlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk5OTZBOUQyNTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZh
dGVGb3JUZXN0aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTlCMTY3NTcyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3
NTQyNTJCQjdFMDAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5QjE2NzU4MjUyQkI3RTEw
MDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBF
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggKi87IH07CisJCTk5QjE2NzVCMjUy
QkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NUEy
NTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
LmggKi87IH07CisJCTk5QjE2NzY0MjUyQkJFNjIwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5QjE2NzYxMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJOTlDM0FFMkQxREFEQTZBRDAwQUY1QzE2IC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OUMzQUUyQzFEQURBNkE3MDBBRjVDMTYgLyogV2ViQXV0b21hdGlv
blNlc3Npb25NYWNyb3MuaCAqLzsgfTsKIAkJOTlDODFENUExQzIwRTdFMjAwNUM0QzgyIC8qIEF1
dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5QzgxRDU1MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi87
IH07CiAJCTk5QzgxRDVEMUMyMUYzOEIwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1QjFD
MjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovOyB9OwpAQCAtNDUwMCw5
ICs0NTA4LDIyIEBACiAJCTk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJv
dG9jb2xPYmplY3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF1dG9tYXRp
b25Qcm90b2NvbE9iamVjdHMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvQXV0b21h
dGlvblByb3RvY29sT2JqZWN0cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk5OTc4OEFDOTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25m
aWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRp
b25TZXNzaW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTc4OEFDQTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQXV0b21h
dGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OTc5NjU5MzI1MkZERjE2MDBCMzFBRTMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUluc3BlY3RvckV4dGVuc2lv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5Nzk2NTk0MjUyRkRGMTYwMEIz
MUFFMyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5Nzk2NTlBMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdl
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5OTc5NjU5QjI1MzEw
QTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTk5
Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1
IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLSW5zcGVjdG9yUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTk5NkE5RDI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3Rpbmcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yUHJpdmF0ZUZv
clRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk5OTZBOUUyNTAwNEJD
QjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclRlc3RpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JUZXN0aW5nLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5OUIxNjc1NDI1MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3Rv
ckV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc1NTI1MkJC
N0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NTYyNTJCQjdFMTAwNzMxNDBFIC8q
IF9XS0luc3BlY3RvckV4dGVuc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTlCMTY3NUEyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk5QjE2NzVEMjUyQkJFMEEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzYwMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NjEyNTJCQkU2MTAwNzMxNDBFIC8qIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NjIyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNBRTIzMURBRDhFMzQwMEFGNUMxNiAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OUMzQUUyNjFEQUQ5NDg1MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25D
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9t
YXRpb25TZXNzaW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNB
RTJDMURBREE2QTcwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI3OCw2ICs3Mjk5LDEwIEBACiAJCQkJ
OTkxRjQ5MkUyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLm1t
ICovLAogCQkJCTk5MDM2QUUxMjNBOTQ5Q0UwMDAwQjA2QSAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dh
YmxlSW5mb0ludGVybmFsLmggKi8sCiAJCQkJOTE5Nzk0MEIyM0RCQzUwMzAwMjU3ODkyIC8qIF9X
S0luc3BlY3RvckRlbGVnYXRlLmggKi8sCisJCQkJOTlCMTY3NTQyNTJCQjdFMDAwNzMxNDBFIC8q
IF9XS0luc3BlY3RvckV4dGVuc2lvbi5oICovLAorCQkJCTk5QjE2NzU2MjUyQkI3RTEwMDczMTQw
RSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi8sCisJCQkJOTk3OTY1QTIyNTMxMjhDNzAw
QjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLywKKwkJCQk5OUIxNjc1NTI1
MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLywKIAkJ
CQk1Q0FGREU0NDIxMzA4NDM2MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCAqLywK
IAkJCQk5OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oICov
LAogCQkJCTk5OTk2QTlEMjUwMDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9y
VGVzdGluZy5oICovLApAQCAtODUyOSw2ICs4NTU0LDggQEAKIAkJCQkxQzhFMjgzMzEyNzVENzM4
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuY3BwICovLAogCQkJCTFDOEUyODMyMTI3NUQ3
MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oICovLAogCQkJCTFDNzdDMTk1MTI4OEE4
NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk5OUIx
Njc1RDI1MkJCRTBBMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHkuY3BwICovLAorCQkJCTk5QjE2NzVBMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oICovLAogCQkJCUE1NUJBODI3MUJBMzhFMUUw
MDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwICovLAogCQkJCUE1NUJBODI4MUJB
MzhFMUUwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCAqLywKIAkJCQlBNUVDNkFE
MjIxNTFCRDY5MDA2NzdEMTcgLyogV2ViUGFnZURlYnVnZ2FibGUuY3BwICovLApAQCAtODU5Myw2
ICs4NjIwLDkgQEAKIAkJCQkxQzg5MUQ2MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9y
VUkuY3BwICovLAogCQkJCTFDODkxRDYzMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JV
SS5oICovLAogCQkJCTFDODkxRDY0MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5t
ZXNzYWdlcy5pbiAqLywKKwkJCQk5OUIxNjc2MDI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCAqLywKKwkJCQk5OUIxNjc2MTI1MkJCRTYxMDA3
MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggKi8sCisJCQkJOTlC
MTY3NjIyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbiAqLywKIAkJCQlBNTQzRTMwQTIxNUM4QTg0MDAyNzlDRDkgLyogV2ViUGFn
ZUluc3BlY3RvclRhcmdldC5jcHAgKi8sCiAJCQkJQTU0M0UzMDgyMTVDOEE4MzAwMjc5Q0Q5IC8q
IFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuaCAqLywKIAkJCQlBNTQzRTMwOTIxNUM4QTgzMDAyNzlD
RDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwICovLApAQCAtOTIwOSw2
ICs5MjM5LDggQEAKIAkJCQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyogQVBJSWNvbkxvYWRp
bmdDbGllbnQuaCAqLywKIAkJCQk3QThBOUQ1NzFFRjExOUFBMDA5ODAxQUUgLyogQVBJSW5qZWN0
ZWRCdW5kbGVDbGllbnQuaCAqLywKIAkJCQk5MTk3OTQwOTIzREJDNEUwMDAyNTc4OTIgLyogQVBJ
SW5zcGVjdG9yQ2xpZW50LmggKi8sCisJCQkJOTk3OTY1OTMyNTJGREYxNjAwQjMxQUUzIC8qIEFQ
SUluc3BlY3RvckV4dGVuc2lvbi5jcHAgKi8sCisJCQkJOTk3OTY1OTQyNTJGREYxNjAwQjMxQUUz
IC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5oICovLAogCQkJCTMxQjM2MjkwMjE0MUVBQkMwMDdC
RkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAgKi8sCiAJCQkJMzFCMzYyOEUyMTQx
RUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmggKi8sCiAJCQkJN0NFNEQy
MDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8s
CkBAIC0xMDIzOSw2ICsxMDI3MSw4IEBACiAJCQkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8q
IFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi8sCiAJCQkJMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJC
IC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQ0E4Qjk0
NDEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICovLAorCQkJ
CTk5Nzk2NTlCMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTk5Nzk2NTlBMjUzMTBBNDgwMEIzMUFF
MyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAogCQkJ
CTFDQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJMUNCQkU0OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJ
TWVzc2FnZXMuaCAqLywKIAkJCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MkYgLyogV2ViTUROU1Jl
Z2lzdGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTEwNjUwLDYgKzEwNjg0LDkgQEAKIAkJ
CQk5OTFGNDkyRjIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCTk5MDM2QUUyMjNBOTQ5Q0YwMDAwQjA2QSAvKiBfV0tJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTk3OTQw
QzIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTk5QjE2NzU3MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTk5Nzk2NUEzMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc1ODI1MkJCN0Ux
MDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTk3OUNBNTgyMzdGNDlGMTAwMzlFQzA1IC8qIF9XS0luc3Bl
Y3RvclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5OTk2QTlGMjUwMDRCQ0MwMDRGNzU1
OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MDc2MCw2ICsxMDc5Nyw3IEBACiAJCQkJN0E4QTlENUMxRUYxNDU5ODAwOTgwMUFFIC8qIEFQSUlu
amVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Mzc2OTA3OUExOEYzMUNCMjAwMURGRjA0IC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTk3OTQwQTIzREJDNEUwMDAyNTc4OTIgLyogQVBJSW5z
cGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTc5NjU5NTI1MkZERjI4MDBCMzFB
RTMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUIzNjI4
RjIxNDFFQTVEMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDRTREMjA3MUE0Njc3NjEwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlz
dG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVC
IC8qIEFQSUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTM3Miw2ICsxMTQxMCw5
IEBACiAJCQkJMUM4RTI4MzQxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4OTFENjYxOUIxMjRGRjAw
QkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc2NDI1
MkJCRTYyMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5OTc5NjU5RTI1MzEwQTQ5MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QjE2
NzVCMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdl
Ykluc3BlY3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUJBODJCMUJBMzhF
NjEwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJEQTk0NEEwMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJJT1NFdmVudEZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTMxNDEsNiArMTMxODIsNyBAQAogCQkJCUZFREJEQ0Q2MUU2OEQyMDAwMEE1
OUY4RiAvKiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFDOEUyQTM1MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5NDUxMjdD
ODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUNCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzhBMjEyQjZBQjEwMEY0OTNGRCAvKiBX
ZWJLZXlib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjI4MEYzMTkxOTk4MkEw
MDZBRDlGOSAvKiBXZWJLaXQubSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCmluZGV4IDljMzdiMDAzYzFjYjc3MWQ5YjNmNzlkZGE2
NTUyYTQ5MDdkN2VkZDcuLjNlY2FhZjhlODhkZjljMzMxZTAzNDhlZGE1MDM3NGE0ZjEwMjczMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKQEAgLTcw
LDYgKzcwLDIyIEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjp1bnN1
c3BlbmQoKQogICAgIGV2YWx1YXRlUXVldWVkRXhwcmVzc2lvbnMoKTsKIH0KIAordm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmRpc3BhdGNoQ29tbWFuZChjb25zdCBTdHJp
bmcmIGNvbW1hbmQsIFZlY3RvcjxSZWY8SlNPTjo6VmFsdWU+PiYmIGFyZ3VtZW50cykKK3sKKyAg
ICBTdHJpbmdCdWlsZGVyIGV4cHJlc3Npb247CisgICAgZXhwcmVzc2lvbi5hcHBlbmRMaXRlcmFs
KCJJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChbXCIiKTsKKyAgICBleHByZXNzaW9uLmFw
cGVuZChjb21tYW5kKTsKKyAgICBleHByZXNzaW9uLmFwcGVuZExpdGVyYWwoIlwiIik7CisKKyAg
ICBmb3IgKGF1dG8mIGFyZ3VtZW50IDogYXJndW1lbnRzKSB7CisgICAgICAgIGV4cHJlc3Npb24u
YXBwZW5kTGl0ZXJhbCgiLCAiKTsKKyAgICAgICAgYXJndW1lbnQtPndyaXRlSlNPTihleHByZXNz
aW9uKTsKKyAgICB9CisKKyAgICBleHByZXNzaW9uLmFwcGVuZExpdGVyYWwoIl0pIik7CisgICAg
ZXZhbHVhdGVPclF1ZXVlRXhwcmVzc2lvbihleHByZXNzaW9uLnRvU3RyaW5nKCkpOworfQorCiB2
b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hDb21tYW5kKGNv
bnN0IFN0cmluZyYgY29tbWFuZCkKIHsKICAgICBldmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKG1h
a2VTdHJpbmcoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtcIiIsIGNvbW1hbmQsICJc
Il0pIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmgKaW5kZXgg
ZGI2OTBlNGE0MTYwN2FkZjEwMzRjYjhlNDVhMGZiMGY1ZDY1ZmQ2OS4uOTY0M2UzZWNlZWVmMjlh
YzMzOWJjMDA1NDZlOWIxNjhhY2Y3NDQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5k
QVBJRGlzcGF0Y2hlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsNiArNDMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCB1bnN1c3BlbmQoKTsK
IAorICAgIHZvaWQgZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgVmVjdG9y
PFJlZjxKU09OOjpWYWx1ZT4+JiYgYXJndW1lbnRzKTsKKyAgICAvLyBGSVhNRTogc3dpdGNoIGNh
bGxlcnMgb2YgdGhlc2UgbWV0aG9kcyBvdmVyIHRvIHRoZSBKU09OOjpWYWx1ZSBiYXNlZCB2ZXJz
aW9uLgogICAgIHZvaWQgZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAg
ICAgdm9pZCBkaXNwYXRjaENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJp
bmcmIGFyZ3VtZW50KTsKICAgICB2b2lkIGRpc3BhdGNoQ29tbWFuZChjb25zdCBTdHJpbmcmIGNv
bW1hbmQsIGJvb2wgYXJndW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcAppbmRleCBkNzliZjhiYzdiZGE3MDBkZGVm
NjI0MGVkZDQ5ZWIyNGQzNDcyYWI0Li5iNDE2NGQ1MDJmNGNmMzkxOTMyZjY2ODgzMjFkNDVhNDg0
M2U1YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJLmNwcApAQCAtNDAsNiArNDAsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+
CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjUsNiArNjksOCBAQCBXZWJJbnNwZWN0
b3JVSTo6V2ViSW5zcGVjdG9yVUkoV2ViUGFnZSYgcGFnZSkKICAgICBXZWJJbnNwZWN0b3JVSTo6
ZW5hYmxlRnJvbnRlbmRGZWF0dXJlcygpOwogfQogCitXZWJJbnNwZWN0b3JVSTo6fldlYkluc3Bl
Y3RvclVJKCkgPSBkZWZhdWx0OworCiB2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25u
ZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGNv
bnN0IERlYnVnZ2FibGVJbmZvRGF0YSYgZGVidWdnYWJsZUluZm8sIGJvb2wgdW5kZXJUZXN0LCB1
bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiB7CiAgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
ciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwpAQCAtNzIsNiArNzgsMTAgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIGlu
c3BlY3RlZFBhZ2VJZGUKICAgICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKICAgICBtX2luc3Bl
Y3Rpb25MZXZlbCA9IGluc3BlY3Rpb25MZXZlbDsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcj4oKnRoaXMpOworI2VuZGlmCisgICAgCiAgICAgbV9m
cm9udGVuZEFQSURpc3BhdGNoZXIucmVzZXQoKTsKIAogICAgIG1fZnJvbnRlbmRDb250cm9sbGVy
ID0gJm1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CkBAIC0xNjUsNiAr
MTc1LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKIAogICAgIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIgPSB7IH07CiAgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKKyAg
ICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250
cm9sbGVyID0gbnVsbHB0cjsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpyZW9w
ZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSS5oCmluZGV4IDAyNmE3MTJhMDg5OWQwNDU1ZjMxODVhYjc5NzZjMTQwMDVkOGViYWIu
Ljg2N2Y1MjMxYjQ5YzJlMzdhNzIwZjU2ZDI2ZWNlN2FmMDA1NWVlOGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKQEAgLTMx
LDEwICszMSwxMSBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckRlYnVnZ2FibGVUeXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKK2NsYXNzIEluc3BlY3RvckZyb250
ZW5kSG9zdDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEZsb2F0UmVjdDsKIH0KQEAg
LTQyLDExICs0MywxOCBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViUGFnZTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitjbGFzcyBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKIAotY2xhc3MgV2ViSW5z
cGVjdG9yVUkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJJbnNwZWN0b3JVST4sIHByaXZhdGUgSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudCB7CitjbGFzcyBXZWJJbnNwZWN0b3JVSSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkluc3Bl
Y3RvclVJPgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkluc3BlY3RvclVJPgorICAg
ICwgcHJpdmF0ZSBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgICwgcHVibGljIFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYklu
c3BlY3RvclVJPiBjcmVhdGUoV2ViUGFnZSYpOwotCisgICAgfldlYkluc3BlY3RvclVJKCk7Cisg
ICAgICAgIAogICAgIHN0YXRpYyB2b2lkIGVuYWJsZUZyb250ZW5kRmVhdHVyZXMoKTsKIAogICAg
IC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZl
ci5jcHAKQEAgLTE0OCw2ICsxNTYsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVW5kZXJUZXN0
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV91bmRlclRlc3Q7IH0KIAorICAgIFdlYlBhZ2UmIGZyb250
ZW5kUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIFdlYkluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgeyByZXR1cm4gbV9mcm9u
dGVuZEFQSURpc3BhdGNoZXI7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0
b3JVSShXZWJQYWdlJik7CiAKQEAgLTE1OSw2ICsxNzAsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBj
b3JlUGFnZSgpLCBzaW5jZSB3ZSBtYXkgbmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBwYWdl
IGhhcyBzdGFydGVkIGRlc3RydWN0aW9uLgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXIqIG1fZnJvbnRlbmRDb250cm9sbGVyIHsgbnVsbHB0ciB9OwogCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgorICAgIAogICAg
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBi
b29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKICAgICBEZWJ1Z2dhYmxlSW5mb0RhdGEgbV9kZWJ1
Z2dhYmxlSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41ZTIwMzBjMjcyNzJlOGQ4ZWI5MGUxOGZiNDlmNTY5ZTE1YmFkYTY2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisK
KyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSS5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyTWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyKFdlYkluc3BlY3RvclVJJiBpbnNwZWN0b3IpCisgICAgOiBtX2luc3BlY3RvcihtYWtlV2Vh
a1B0cihpbnNwZWN0b3IpKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKCkKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOwor
fQorCisvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgor
Cit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBBU1NFUlQobV9pbnNwZWN0b3IpOworCisgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFy
Z3VtZW50cyB7IEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpLCBKU09OOjpWYWx1ZTo6
Y3JlYXRlKGRpc3BsYXlOYW1lKSB9OworICAgIG1faW5zcGVjdG9yLT5mcm9udGVuZEFQSURpc3Bh
dGNoZXIoKS5kaXNwYXRjaENvbW1hbmQoInJlZ2lzdGVyRXh0ZW5zaW9uIiwgV1RGTW92ZShhcmd1
bWVudHMpKTsKKworICAgIC8vIEZJWE1FOiB1c2UgcmV0dXJuIHZhbHVlIG9mIHRoZSBldmFsdWF0
aW9uIHRvIGRldGVybWluZSBpZiB3ZSBzdWNjZWVkZWQgb3IgZmFpbGVkLgorICAgIGNvbXBsZXRp
b25IYW5kbGVyKHRydWUpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjo6dW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFT
U0VSVChtX2luc3BlY3Rvcik7CisgICAgCisgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFy
Z3VtZW50cyB7IEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07CisgICAgbV9pbnNw
ZWN0b3ItPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZCgidW5yZWdpc3Rl
ckV4dGVuc2lvbiIsIFdURk1vdmUoYXJndW1lbnRzKSk7CisKKyAgICAvLyBGSVhNRTogdXNlIHJl
dHVybiB2YWx1ZSBvZiB0aGUgZXZhbHVhdGlvbiB0byBkZXRlcm1pbmUgaWYgd2Ugc3VjY2VlZGVk
IG9yIGZhaWxlZC4KKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzI1
ZjAzYzYwOGQ5M2RiYTkzMzhkMTVmNzQ3ZWMxMzZmMTYyOTZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUk7CisK
K2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciA6IHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKTsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoV2ViSW5z
cGVjdG9yVUkmKTsKKyAgICB+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKCk7CisK
KyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICAvLyBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgorICAgIHZvaWQgcmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCB1
bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCitwcml2YXRlOgorICAgIFdlYWtQdHI8V2ViSW5zcGVj
dG9yVUk+IG1faW5zcGVjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NzU3
ODE2NTEzMzk4ZDhiNTA0NjVhYzFmMDY3ZTE4MzcyN2FhZGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMwIEBACisjIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisKK21lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBOb3RSZWZD
b3VudGVkIHsKKyAgICBSZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQsIFN0cmlu
ZyBkaXNwbGF5TmFtZSkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKKyAgICBVbnJlZ2lzdGVyRXh0
ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9PcHRpb25zTWFjLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UK
aW5kZXggYTI3NTQ5NWJhNTJlN2FlYzFlNTU1NTJjOTJlMTZkYzQ3MWQ3YzNlNC4uZTlkZGNkOWU4
NDY3MTNjYmJjMzMxODRiYjgxNjU5YzU5ODFhMTY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L09wdGlvbnNNYWMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UKQEAg
LTUwLDYgKzUwLDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMgUFJJVkFURSBPTikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SIFBSSVZB
VEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5TUEVDVE9S
X0FMVEVSTkFURV9ESVNQQVRDSEVSUyBQUklWQVRFIE9OKQorV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0lOU1BFQ1RPUl9FWFRFTlNJT05TIFBSSVZBVEUgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5TUEVDVE9SX1RFTEVNRVRSWSBQ
UklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOVEVS
U0VDVElPTl9PQlNFUlZFUiBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX0xBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQgUFJJVkFURSBPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9X
ZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCBhMmZmNTNkZDYyMWM1ZmM0NzcwYWMyZDc4MzE2ZWI1
ZThjOWIwMzg2Li44MDE2MmZhZTgyZDIwY2RmN2ZlYTQ3ZDhjYTkxZTVlZTMxYmU0N2Q1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2Nt
YWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC0xNTEsNiArMTUxLDcgQEAgbWFjcm8oV0VCS0lU
X09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5QVVRfVFlQ
RV9USU1FICJUb2dnbGUgSW5wdXQgVHlwZSBUaW1lIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX1dFRUsgIlRvZ2dsZSBJbnB1
dCBUeXBlIFdlZWsgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMgIlRvZ2dsZSBpbnNwZWN0
b3IgYWx0ZXJuYXRlIGRpc3BhdGNoZXJzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQorICAgIFdFQktJ
VF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlNQRUNUT1JfRVhURU5TSU9OUyAiVG9nZ2xlIGluc3Bl
Y3RvciB3ZWIgZXh0ZW5zaW9ucyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfSU5TUEVDVE9SX1RFTEVNRVRSWSAiVG9nZ2xlIGluc3BlY3RvciB0
ZWxlbWV0cnkgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0lOVEVSU0VDVElPTl9PQlNFUlZFUiAiRW5hYmxlIEludGVyc2VjdGlvbiBPYnNlcnZl
ciBzdXBwb3J0IiBQUklWQVRFIE9OKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9J
T1NfR0VTVFVSRV9FVkVOVFMgIlRvZ2dsZSBpT1MgZ2VzdHVyZSBldmVudHMgc3VwcG9ydCIgUFJJ
VkFURSBPRkYpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYTRhZWYz
OWRhZDY1ODEzODA0ZWRjMTZjNzQ1NDEwZDM2NDQzODBjZC4uNTg3NjQ3OWUzNzY1ZTk5NGYyZjE0
NjhlOGFkYWZhZWRiMjQwYTYwNCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTEwLTE1ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4dGVuc2lvbnM6IEFkZCBfV0tJbnNw
ZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4MworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6CisgICAgICAgIEFkZCBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpLCB3aGljaCBpcyBvbmx5IG9uIGZvciB0aGUgQ29jb2EgbWFjT1MgcG9ydC4K
KwogMjAyMC0xMC0xNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIEFDQ0VMRVJBVEVEXzJEX0NBTlZBUyBidWlsZCBmbGFncyBhbmQgZ3VhcmRl
ZCBjb2RlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411601</attachid>
            <date>2020-10-16 11:35:11 -0700</date>
            <delta_ts>2020-10-16 15:12:21 -0700</delta_ts>
            <desc>Patch v1.2</desc>
            <filename>bug-217783-20201016113511.patch</filename>
            <type>text/plain</type>
            <size>93789</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2MTA1MWUyZjU0ODQ2NGM2N2ZkOTlj
ZDk4M2ViNDM5NmI2MGFiZmYuLjRkYzk2NTAwOGY1MjQ1YTg2ZWZiYjNlMTg5YjcwZWNjN2IzZThl
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMTYgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9X
S0luc3BlY3RvckV4dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82OTk2ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmg6CisgICAgICAgIEFkZCBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
LCB3aGljaCBpcyBvbmx5IG9uIGZvciB0aGUgQ29jb2EgbWFjT1MgcG9ydC4KKwogMjAyMC0xMC0x
NiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyNjc3MjcpOiBXYXJuaW5nIHNwYW0gZnJvbSBKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBhYTZjY2Y3ZTJjMmM1M2I1ZjdhZWQw
NmRmMGVmYWEzNDc1NTAxMWNhLi5mMmQ5ZWMyYjgxZDY4MGQ3NjYwOTY3OGZiOGVmYzJjOWY0NmE5
ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMC0xMC0x
NiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEluc3Bl
Y3RvciBFeHRlbnNpb25zOiBBZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFuZCByZWxhdGVkIHBs
dW1iaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTc3ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5OTY4Nzg3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0
bWw6IEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0FwcENvbnRyb2xsZXJCYXNlLmpzOgorICAgICAgICAoV0kuQXBwQ29udHJvbGxlckJhc2UpOgor
ICAgICAgICAoV0kuQXBwQ29udHJvbGxlckJhc2UucHJvdG90eXBlLmdldCBleHRlbnNpb25Db250
cm9sbGVyKToKKyAgICAgICAgSGFuZyB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xsZXIgb2ZmIG9mIHRo
ZSBnbG9iYWwgc2luZ2xldG9uLCBhcyB0aGVyZSBjYW4gb25seSBiZSBvbmUuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIuanM6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyKToKKyAg
ICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlZ2lz
dGVyRXh0ZW5zaW9uKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xs
ZXIucHJvdG90eXBlLnVucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICBBZGRlZC4gRm9yIG5v
dywganVzdCBrZWVwIHRoZSBVVUlEcyBpbiBhIG1hcCBhbmQgbG9nIHRoZSByZXN1bHQuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanM6Cisg
ICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24pOgorICAgICAgICAoV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLnByb3RvdHlwZS5nZXQgZXh0ZW5zaW9uSUQpOgorICAgICAgICAoV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uLnByb3RvdHlwZS5nZXQgZGlzcGxheU5hbWUpOgorICAgICAgICBB
ZGRlZC4gVGhpcyBpcyBhIGRhdGEgb2JqZWN0IGZvciBub3cuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzOgorICAgICAgICAoSW5zcGVj
dG9yRnJvbnRlbmRBUEkubG9hZENvbXBsZXRlZCk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVu
ZEFQSS5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS51
bnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIEZvcndhcmQgaW52b2NhdGlvbnMg
dG8gdGhlIGV4dGVuc2lvbiBjb250cm9sbGVyLgorCiAyMDIwLTEwLTE0ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9O
KHIyNjcxNDgpOiBuZXcgQmlnIFN1ciBzdHlsZXMgYXJlIG5vdCB1c2VkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgx
ODkyMmYyMDM1Y2VjMjZjZTNkMGZjYzM3ODYyMmRiZDg5ZjFlZjguLmQxMzIxOGRjYWQyYmE4YTVm
MmNjNDYzMTIxMDZhZDU3YmE0ZjQ2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEzIEBACisyMDIw
LTEwLTE2ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
SW5zcGVjdG9yIEV4dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0
ZWQgcGx1bWJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNzc4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uIGlzIG5ldyBTUEkgdGhhdCByZXByZXNlbnRzIGEgV2ViIEV4dGVuc2lvbiB0aGF0IHVzZXMg
dGhlICdkZXZ0b29scycKKyAgICAgICAgQVBJIHRvIGludGVyYWN0IHdpdGggV2ViIEluc3BlY3Rv
ci4gQW4gZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQgd2l0aCBpdHMgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uSG9zdC4KKyAgICAgICAgQSBXZWJLaXQgY2xpZW50IHRoYXQgc3VwcG9ydHMgV2ViIEV4dGVu
c2lvbnMgY2FuIHVzZSB0aGlzIGNsYXNzIHRvIGltcGxlbWVudCAnZGV2dG9vbHMnIGV4dGVuc2lv
biBBUElzLgorCisgICAgICAgIEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IG1ldGhvZHMg
dG8gcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgYW4gZXh0ZW5zaW9uLgorICAgICAgICBBZGQgcGx1
bWJpbmcgc28gdGhhdCB0aGUgZXh0ZW5zaW9uIGluIHJlZ2lzdGVyZWQgaW4gdGhlIGZyb250ZW5k
IHdpdGggV0kuV2ViRXh0ZW5zaW9uQ29udHJvbGxlci4KKworICAgICAgICBMYXRlciBwYXRjaGVz
IHdpbGwgZmxlc2ggb3V0IHRoZSBuZWVkZWQgZnVuY3Rpb25hbGl0eSB0byBpbXBsZW1lbnQgcmVz
dCBvZiB0aGUgJ2RldnRvb2xzJyBBUEkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICBOZXcgQVBJIG9i
amVjdCB0eXBlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHA6
CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKEFQ
STo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpJbnNwZWN0b3JFeHRlbnNpb24pOgorICAgICAgICAoQVBJ
OjpJbnNwZWN0b3JFeHRlbnNpb246On5JbnNwZWN0b3JFeHRlbnNpb24pOgorICAgICAgICBBZGRl
ZC4gVGhpcyBpcyBhIHBsYWNlaG9sZGVyIG9iamVjdCB0aGF0J3MgdXNlZCBmb3IgdGhlIHdyYXBw
ZXIgc3lzdGVtLAorICAgICAgICBzaW5jZSB3ZSBkb24ndCBoYXZlIHNpbmdsZSBDKysgb2JqZWN0
cyBmb3IgZWFjaCBleHRlbnNpb24gdG8gYmFjayB0aGUgQVBJIG9iamVjdC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciByZWdp
c3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bX1dLSW5zcGVjdG9yIHVucmVnaXN0ZXJFeHRlbnNpb246Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgIEltcGxlbWVudCBuZXcgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBt
ZXRob2RzLiBTZW5kIElQQyB0byB0aGUgSW5zcGVjdG9yIHdlYiBwcm9jZXNzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAg
KC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIF9hcGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uIGV4dGVuc2lvbklEXSk6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIGEg
ZGF0YSBvYmplY3QgdGhhdCdzIGFsc28gdXNlZCBhcyBhIHRva2VuIHRvIHVucmVnaXN0ZXIgdGhl
IGV4dGVuc2lvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSG9zdC5oOiBBZGQgbmV3IFNQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIg
cmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHVucmVnaXN0
ZXJFeHRlbnNpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEltcGxlbWVudCBuZXcg
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBtZXRob2RzLiBTZW5kIElQQyB0byB0aGUgSW5zcGVj
dG9yIHdlYiBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6ZXh0ZW5zaW9uQ29udHJvbGxlciBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0lu
c3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAg
ICAgICBTZXQgdXAgdGhlIGV4dGVuc2lvbiBjb250cm9sbGVyIG9iamVjdCBhZnRlciB0aGUgZnJv
bnRlbmQgaGFzIGJlZW4gY3JlYXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6Y3JlYXRlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OmZyb250ZW5kTG9hZGVkKToKKyAgICAgICAgU2V0IHVwIHRoZSBleHRlbnNp
b24gY29udHJvbGxlciBvYmplY3QgYWZ0ZXIgdGhlIGZyb250ZW5kIGhhcyBiZWVuIGNyZWF0ZWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpleHRlbnNpb25Db250cm9sbGVyIGNv
bnN0KTogQWRkZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6fldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjppbnNw
ZWN0b3JGcm9udGVuZExvYWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0
ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIEZvcndhcmQgQVBJIHJlcXVlc3RzIHRvIHRoZSBXZWIg
SW5zcGVjdG9yJ3Mgd2ViIHByb2Nlc3MgdG8gYmUgZXZhbHVhdGVkIGluIHRoZSBmcm9udGVuZC4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJ
RGlzcGF0Y2hlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
ckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
ckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hDb21tYW5kKToKKyAgICAgICAgQWRkIGEg
bW9yZSBnZW5lcmljIHdheSB0byBlbmNvZGUgdmFsdWVzIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVu
dHMgdG8gSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2guCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yVUk6OmNsb3NlV2luZG93KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZnJvbnRl
bmRQYWdlIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpm
cm9udGVuZEFQSURpc3BhdGNoZXIpOiBBZGRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6
dW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIEhhbmRsZSBpbmNvbWluZyBtZXNzYWdlcyBi
eSBmb3J3YXJkaW5nIHRoZSBhc3NvY2lhdGVkIGNvbW1hbmQgdG8gV0kuV2ViRXh0ZW5zaW9uQ29u
dHJvbGxlcgorICAgICAgICB2aWEgSW5zcGVjdG9yRnJvbnRlbmRBUEkgZXZhbHVhdGlvbnMuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbToKKyAgICAgICAg
RmFsbG91dCBmcm9tIHVuaWZpZWQgYnVpbGQgY2h1bmtpbmcgc2hpZnRzLgorCiAyMDIwLTEwLTE2
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9y
dCBmb3IgR1BVUHJvY2VzcyBXZWJBdWRpbyBtZWRpYSBlbGVtZW50IHByb3ZpZGVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlLmgKaW5kZXggMjNjMWRkYjE5NGJmODkzOTI4YmMyMmFiZTg0ZTUyNjUzYzA1
MTVlMi4uYWM1NWY5OTgxMDkxZWZlMjE4NmZmN2U4NjI1YzljMDE2MjU0OTgzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUVuYWJsZS5oCkBAIC0zMjgsNiArMzI4LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9JTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5B
QkxFX0lOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0VYVEVO
U0lPTlMgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SX1RFTEVNRVRS
WSkKICNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUl9URUxFTUVUUlkgMAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXggY2RkOTliN2Y5NDI4ZGUxMWE0ZDFmODk2NzQx
MDY1MzhlNjQ1NjQ1ZS4uNzYzOGVjODk3ZTJmMzlkYzQ5MmQ0NDZiNDhmMjZlNDBjZTQxYWE1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaApAQCAtMjcyLDYgKzI3MiwxMCBAQAog
I2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyAxCiAjZW5kaWYK
IAorI2lmICFkZWZpbmVkKEVOQUJMRV9JTlNQRUNUT1JfRVhURU5TSU9OUykgJiYgUExBVEZPUk0o
TUFDKQorI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0VYVEVOU0lPTlMgMQorI2VuZGlmCisKICNp
ZiAhZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SX1RFTEVNRVRSWSkKICNkZWZpbmUgRU5BQkxFX0lO
U1BFQ1RPUl9URUxFTUVUUlkgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xs
ZXJCYXNlLmpzCmluZGV4IDYxZDRjNDU5NDRkYjY2OTU1ZDAwMDk3M2EzZTZkZWEzYWU2NmVhNTYu
Ljk2ZGZiMGU2NmVmMTUxODExMjY0ODFkYTMxY2IxOTQxNGVmMzE1NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xs
ZXJCYXNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzCkBAIC00MSwxMSArNDEsMTQgQEAgV0kuQXBwQ29u
dHJvbGxlckJhc2UgPSBjbGFzcyBBcHBDb250cm9sbGVyQmFzZQogICAgIGNvbnN0cnVjdG9yKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gZmFsc2U7CisKKyAgICAgICAgdGhp
cy5fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG5ldyBXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyOwog
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGRlYnVnZ2FibGVUeXBlKCkgeyB0aHJv
dyBXSS5Ob3RJbXBsZW1lbnRlZEVycm9yLnN1YmNsYXNzTXVzdE92ZXJyaWRlKCk7IH0KKyAgICBn
ZXQgZXh0ZW5zaW9uQ29udHJvbGxlcigpIHsgcmV0dXJuIHRoaXMuX2V4dGVuc2lvbkNvbnRyb2xs
ZXI7IH0KIAogICAgIC8vIFNpbmNlIHZhcmlvdXMgbWVtYmVycyBvZiB0aGUgYXBwIGNvbnRyb2xs
ZXIgZGVwZW5kIG9uIHRoZSBnbG9iYWwgc2luZ2xldG9uIHRvIGV4aXN0LAogICAgIC8vIHNvbWUg
aW5pdGlhbGl6YXRpb24gbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHRoZSBhcHAgY29udHJvbGxlciBo
YXMgYmVlbiBjb25zdHJ1Y3RlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJ
bnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYTFjZWViMDFlZGNi
ZWQwMzRlMzYzZGY5YzM1OTk3OWM0YmUxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNp
b25Db250cm9sbGVyLmpzCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5XZWJFeHRl
bnNpb25Db250cm9sbGVyID0gY2xhc3MgV2ViRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbmRzIFdJ
Lk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisK
KyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uSURNYXAgPSBuZXcgTWFwOworICAgIH0KKworICAgIHJl
Z2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLl9leHRlbnNpb25JRE1hcC5oYXMoZXh0ZW5zaW9uSUQpKSB7CisgICAgICAgICAg
ICBXSS5yZXBvcnRJbnRlcm5hbEV4Y2VwdGlvbigiVW5hYmxlIHRvIHJlZ2lzdGVyIGV4dGVuc2lv
biwgaXQncyBhbHJlYWR5IHJlZ2lzdGVyZWQ6ICIsIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgZXh0ZW5zaW9u
ID0gbmV3IFdJLldlYkV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOworICAgICAg
ICB0aGlzLl9leHRlbnNpb25JRE1hcC5zZXQoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbik7CisKKyAg
ICAgICAgY29uc29sZS5sb2coIlJlZ2lzdGVyZWQgZXh0ZW5zaW9uOiAiLCBleHRlbnNpb25JRCwg
ZGlzcGxheU5hbWUpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5X
ZWJFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50LkV4dGVuc2lvbkFkZGVkLCB7ZXh0ZW5zaW9ufSk7
CisgICAgfQorCisgICAgdW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCkKKyAgICB7Cisg
ICAgICAgIGlmICghdGhpcy5fZXh0ZW5zaW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgeworICAg
ICAgICAgICAgY29uc29sZS5yZXBvcnRJbnRlcm5hbEV4Y2VwdGlvbigiVW5hYmxlIHRvIHVucmVn
aXN0ZXIgZXh0ZW5zaW9uIHdpdGggdW5rbm93biBJRDogIiwgZXh0ZW5zaW9uSUQpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHRoaXMu
X2V4dGVuc2lvbklETWFwLmdldChleHRlbnNpb25JRCk7CisgICAgICAgIHRoaXMuX2V4dGVuc2lv
bklETWFwLmRlbGV0ZShleHRlbnNpb25JRCk7CisKKyAgICAgICAgY29uc29sZS5sb2coIlVucmVn
aXN0ZXJlZCBleHRlbnNpb246ICIsIGV4dGVuc2lvbklEKTsKKyAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV0kuV2ViRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudC5FeHRlbnNp
b25SZW1vdmVkLCB7ZXh0ZW5zaW9ufSk7CisgICAgfQorfTsKKworV0kuV2ViRXh0ZW5zaW9uQ29u
dHJvbGxlci5FdmVudCA9IHsKKyAgICBFeHRlbnNpb25BZGRlZDogImV4dGVuc2lvbi1hZGRlZCIs
CisgICAgRXh0ZW5zaW9uUmVtb3ZlZDogImV4dGVuc2lvbi1yZW1vdmVkIiwKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggZTQxYTA4YWVl
MTE1YTk0N2Y0NDE0ZGNjYTU1MzJkZDU4N2RlYWUyMy4uNDhiOTQzNWRkNTdmMmNmYzUzNTU1YjE1
YmJjNjZiY2U3MTc1ZDIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbApAQCAtNDg2LDYgKzQ4Niw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9UeXBlRGVzY3JpcHRpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
VHlwZVNldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9VUkxCcmVha3Bv
aW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dlYkluc3BlY3RvckV4
dGVuc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XZWJTb2NrZXRS
ZXNvdXJjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVkUHJv
bWlzZS5qcyI+PC9zY3JpcHQ+CiAKQEAgLTg4OCw2ICs4ODksNyBAQAogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9IQVJCdWlsZGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvSGVhcE1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9JbmRleGVkREJNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJv
bGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0phdmFTY3Jp
cHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvTGF5ZXJUcmVlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTQ4MWU1NjZmNTg0NGM3MmRi
ZDkzNDI2YWI3ODFlNzExYjA2MWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcwpAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uID0gY2xh
c3MgV2ViSW5zcGVjdG9yRXh0ZW5zaW9uIGV4dGVuZHMgV0kuT2JqZWN0Cit7CisgICAgY29uc3Ry
dWN0b3IoZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
KworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgZXh0ZW5zaW9uSUQgPT09ICJzdHJpbmci
LCBleHRlbnNpb25JRCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBkaXNwbGF5TmFt
ZSA9PT0gInN0cmluZyIsIGRpc3BsYXlOYW1lKTsKKworICAgICAgICB0aGlzLl9leHRlbnNpb25J
RCA9IGV4dGVuc2lvbklEOworICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1l
OworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGV4dGVuc2lvbklEKCkgeyByZXR1
cm4gdGhpcy5fZXh0ZW5zaW9uSUQ7IH0KKyAgICBnZXQgZGlzcGxheU5hbWUoKSB7IHJldHVybiB0
aGlzLl9kaXNwbGF5TmFtZTsgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanMKaW5kZXggMWQxZjI4OGJiODM0ZDQ4MmY2NGUzOWVmMGZiZDUzODZkODc0ZGVmMC4uZWU3
N2E2YjM4ODA5MjJkODYxZjZiNjVjYTY0MTk1NzQ0Nzc3NTJmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
SW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTE5Niw1ICsxOTYsMTUgQEAgSW5zcGVjdG9yRnJv
bnRlbmRBUEkgPSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChJ
bnNwZWN0b3JGcm9udGVuZEFQSS5fcGVuZGluZ0NvbW1hbmRzW2ldKTsKIAogICAgICAgICBkZWxl
dGUgSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kczsKKyAgICB9LAorCisgICAg
cmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lKQorICAgIHsKKyAgICAg
ICAgV0kuc2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIucmVnaXN0ZXJFeHRlbnNpb24oZXh0
ZW5zaW9uSUQsIGRpc3BsYXlOYW1lKTsKKyAgICB9LAorCisgICAgdW5yZWdpc3RlckV4dGVuc2lv
bihleHRlbnNpb25JRCkKKyAgICB7CisgICAgICAgIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250
cm9sbGVyLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQpOwogICAgIH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNDZiYWUz
NzVjZDExYWUyMTMwMGE2YzU3ZGRlZjA1NDExYWM4MDNlOS4uNzBjOGZmZDk2MGExYzhkNTc3Nzhj
OTg0MjUzYWJlNzk3MGE0ZDljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdApAQCAtOTUsNiArOTUsNyBAQCAkKFBST0pFQ1RfRElSKS9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQ
cm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorJChQ
Uk9KRUNUX0RJUikvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL01lZGlhL0F1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTM3LDYgKzEzOCw3IEBA
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24v
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCiskKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdAppbmRleCAwOWFmZjY1ZTFjZTA0YTVkOWQwZjJlNWYxMWViZmIyNTE5OTM0YjJmLi41YWU3
NDlkOGJhZjgzMzgyMzllYWQ4ZTMzZGNkZTBhNzNjZDk1M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTMzMyw2ICszMzMsOSBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXJNZXNzYWdlc1JlcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2VydmVy
TWVzc2FnZXNSZXBsaWVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5j
cHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VzUmVwbGllcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVj
dG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNz
YWdlc1JlcGxpZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDNjOTE5MTE0NzUx
NmY2NDFlNGFlZmM0YWRhZGZkMmQ4ODVlZGViMTQuLjQ3MjkzMDFiNDNkYjhiN2VhYmI2YWU1YjQ2
MjY1NzM4NjExNzkxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE4MCw2ICsx
ODAsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKIAlXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlciBcCiAJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9ySW50ZXJydXB0RGlzcGF0Y2hlciBcCiAJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUkgXAorCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlciBcCiAJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yIFwKIAlXZWJQcm9j
ZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAJV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
T2JqZWN0LmgKaW5kZXggNDU3YzI2MjJhZjFhYmRhM2RmZTYzNzcwZTI3MTRkMTJmN2M3YzQ4Zi4u
MDE1YjAwYTJhYzRkOThjNzA4MTVmN2FjMDM1ZTkwYWU3NTJkYzljZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTM2LDYgKzEzNiw5IEBAIHB1YmxpYzoKICAgICAgICAg
R3JhbW1hckRldGFpbCwKICAgICAgICAgSWNvbkRhdGFiYXNlLAogICAgICAgICBJbnNwZWN0b3Is
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgICAgICBJbnNwZWN0b3JFeHRl
bnNpb24sCisjZW5kaWYKICAgICAgICAgS2V5VmFsdWVTdG9yYWdlTWFuYWdlciwKICAgICAgICAg
TWVkaWFDYWNoZU1hbmFnZXIsCiAgICAgICAgIE1lc3NhZ2VMaXN0ZW5lciwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCAxNzMwYmQ0OTNmZDBiNDZkZWVjYzI0N2Q3
YzE4MmNkNjgyOGRhNjMxLi41Y2UxMmNkNzIyMjI2NDA0MTczYTFlZTdkNmJmMTUwYjFmNjM3OTE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC05OCw2ICs5OCwx
MCBAQAogI2ltcG9ydCAiX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNpbXBvcnQgIl9XS0luc3BlY3Rv
ckV4dGVuc2lvbkludGVybmFsLmgiCisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHNpemVfdCBtaW5p
bXVtT2JqZWN0QWxpZ25tZW50ID0gYWxpZ25vZihzdGQ6OmFsaWduZWRfc3RvcmFnZTxzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPjo6dHlwZSk7CiBzdGF0aWNfYXNzZXJ0KG1pbmlt
dW1PYmplY3RBbGlnbm1lbnQgPj0gYWxpZ25vZih2b2lkKiksICJPYmplY3RzIHNob3VsZCBhbHdh
eXMgYmUgYXQgbGVhc3QgcG9pbnRlci1hbGlnbmVkLiIpOwogc3RhdGljIGNvbnN0IHNpemVfdCBt
YXhpbXVtRXh0cmFTcGFjZUZvckFsaWdubWVudCA9IG1pbmltdW1PYmplY3RBbGlnbm1lbnQgLSBh
bGlnbm9mKHZvaWQqKTsKQEAgLTI2NCw3ICsyNjgsMTMgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmpl
Y3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGU6Okluc3BlY3RvcjoKICAg
ICAgICAgd3JhcHBlciA9IFtfV0tJbnNwZWN0b3IgYWxsb2NdOwogICAgICAgICBicmVhazsKLSAg
ICAgICAgCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgY2FzZSBUeXBl
OjpJbnNwZWN0b3JFeHRlbnNpb246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKwogICAgIGNhc2UgVHlwZTo6
TmF2aWdhdGlvbjoKICAgICAgICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IGRhZjVmYjczMTNiZGQ5ODA2OGRlZGQzOWNiYWM0
ZGZiZTkzNzdjYTguLjcxNmU4YjExYTZkOWFjYjU5M2Y1NmU5ZDZjZmMxNDkwY2UwMzEzODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dApAQCAtMzQyLDYgKzM0Miw3IEBAIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZv
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElGcmFtZVRyZWVOb2RlLmNwcAogVUlQcm9jZXNzL0FQSS9B
UElIVFRQQ29va2llU3RvcmUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuY3Bw
CitVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHAKIFVJUHJvY2Vzcy9BUEkv
QVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24u
Y3BwCiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25EYXRhLmNwcApAQCAtNDM0LDYgKzQzNSw3
IEBAIFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rv
ci9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5
LmNwcAorVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNw
cAogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlRGVidWdnYWJsZS5jcHAKIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC01NDMsNiArNTQ1LDcg
QEAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAogV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5jcHAKIFdlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcAorV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYlBh
Z2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
UGFnZUluc3BlY3RvclRhcmdldEZyb250ZW5kQ2hhbm5lbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAppbmRleCA1NGUzMTk0YmRjZDEwNTQ5ZjU3MzlmZjRiZGUwZGQ3YTcxYTZlNDlhLi5iMzYyMTZi
MjEzNjQ4YzU2MjZhOTlhYzdjMTRhMjU1M2I4ZjZmNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CkBAIC0yNTgsNiArMjU4LDcgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBv
c2l0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JUZXN0aW5nLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLm1tCitVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckV4dGVuc2lvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JXaW5kb3cu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLTGlua0ljb25QYXJhbWV0ZXJzLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM0MDY5NmU2MTg3NDJiYmZkMzViZDEyZGE2MzBiYzVlZjM0ODY4OTEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9u
LmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFQSUluc3BlY3RvckV4dGVuc2lvbi5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IEFQSSB7CisKK1JlZjxJbnNwZWN0b3JFeHRlbnNpb24+IEluc3BlY3RvckV4dGVuc2lvbjo6Y3Jl
YXRlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckV4dGVuc2lvbihpZGVudGlmaWVyLCBleHRlbnNp
b25Db250cm9sbGVyKSk7Cit9CisKK0luc3BlY3RvckV4dGVuc2lvbjo6SW5zcGVjdG9yRXh0ZW5z
aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyKQorICAgIDogbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2V4dGVuc2lvbkNvbnRyb2xsZXIobWFrZVdl
YWtQdHIoZXh0ZW5zaW9uQ29udHJvbGxlcikpCit7Cit9CisKK0luc3BlY3RvckV4dGVuc2lvbjo6
fkluc3BlY3RvckV4dGVuc2lvbigpID0gZGVmYXVsdDsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjUxYTQyYzJlMjcwNDY2NzZlODkwOTk3ZjkwOGMzZDE1MDM4OTg5ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2Ns
YXNzIEluc3BlY3RvckV4dGVuc2lvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8T2Jq
ZWN0OjpUeXBlOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PEluc3BlY3RvckV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVy
LCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CisgICAg
dmlydHVhbCB+SW5zcGVjdG9yRXh0ZW5zaW9uKCk7CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgor
ICAgIEluc3BlY3RvckV4dGVuc2lvbihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYpOworCisgICAgV1RG
OjpTdHJpbmcgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4gbV9leHRlbnNpb25Db250cm9sbGVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
LmgKaW5kZXggMTg5OWU4MThiMzYzZTg1ZDQ2MGIzMDk3M2I0YWEwZDQ4ODk5NTk5ZS4uODZiMWNm
ODk2Mjc4ZjE5NzJiOWE3OTk3YzQ5Mjc0ZDFlZWRjY2Y1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaApAQCAtMjUsMTcgKzI1LDE1IEBA
CiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3Qu
aD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdLV2ViVmlldzsKIEBjbGFz
cyBfV0tGcmFtZUhhbmRsZTsKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CiBAcHJvdG9j
b2wgX1dLSW5zcGVjdG9yRGVsZWdhdGU7CiAKLU5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCi0KLUBw
cm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Ci0tICh2b2lkKWNsb3NlOwotQGVuZAot
CiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkKIEBpbnRlcmZh
Y2UgX1dLSW5zcGVjdG9yIDogTlNPYmplY3QgPF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3Q+CiAK
QEAgLTUyLDYgKzUwLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3Mo
MTIuMikpCiAKIC0gKHZvaWQpY29ubmVjdDsKIC0gKHZvaWQpc2hvdzsKKy0gKHZvaWQpY2xvc2U7
CiAtICh2b2lkKWhpZGU7CiAtICh2b2lkKXNob3dDb25zb2xlOwogLSAodm9pZClzaG93UmVzb3Vy
Y2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3IubW0KaW5kZXggNjczNDExZjMwZWYxZDEwOGUxZDQ0NDc0MTk0YmNjYThmOTNkMWY2Yi4uMDli
NTBkOTI2ZGEzMTNmNWRmMzc2ODVmN2EzYWNjYTU3NGFmNmQ4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogCiAjaW1wb3J0ICJJbnNwZWN0
b3JEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50
ZXJuYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1By
b3h5LmgiCkBAIC0zNyw2ICszOCwxMyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2lt
cG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCisjaW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKKyNpbXBvcnQgIldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0
b3JFeHRlbnNpb25JbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjZW5kaWYK
KwogQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvcgogCiAvLyBNQVJLOiBfV0tJbnNwZWN0b3Ig
bWV0aG9kcwpAQCAtMTk0LDQgKzIwMiwzOCBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAog
ICAgIHJldHVybiAqX2luc3BlY3RvcjsKIH0KIAorLy8gTUFSSzogX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uSG9zdCBtZXRob2RzCisKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3Ry
aW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24g
KikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9u
KGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWlu
UHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVy
ZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3Mp
IG11dGFibGUgeworICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGNhcHR1cmVk
QmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9y
VW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Okluc3BlY3Rv
ckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90ZWN0ZWRT
ZWxmLT5faW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCkpKSByZXRhaW5dIGF1dG9yZWxl
YXNlXSk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
bmlsXSwgbmlsKTsKKyNlbmRpZgorfQorCistICh2b2lkKXVucmVnaXN0ZXJFeHRlbnNpb246KF9X
S0luc3BlY3RvckV4dGVuc2lvbiAqKWV4dGVuc2lvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lz
dGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKSB7Cisg
ICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9y
RG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCk7CisgICAgfSk7
CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpX
S0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSk7CisjZW5kaWYK
K30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMDI1M2NlMGUwZGEyOGJk
NzA3YTYyYTYxNzUzMDhjZjc2ZDYwMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgor
CitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCitAaW50ZXJmYWNlIF9XS0lu
c3BlY3RvckV4dGVuc2lvbiA6IE5TT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFW
QUlMQUJMRTsKKysgKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CisKK0Bwcm9wZXJ0
eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKmV4dGVuc2lvbklEOworQGVuZAorCitO
U19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NTcz
YmY4Y2MwYTNkMTRjMjUzMGVhMWU2NGQ3NjkyNTcxMDVkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1t
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKK0BpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0b3JFeHRlbnNpb24KKworI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
K3sKKyAgICByZXR1cm4gKl9leHRlbnNpb247Cit9CisKKy8vIE1BUks6IFByb3BlcnRpZXMuCisK
Ky0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKK3sKKyAgICByZXR1cm4gX2V4dGVuc2lvbi0+aWRl
bnRpZmllcigpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTg3ZDk2Mzk4MjcxY2EzZmIxZTk5MTM3NDI0OGRiZGQ3ZDQzMzUxMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uOworCitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdAorQG9wdGlvbmFs
CisKKy8qKgorICogQGFic3RyYWN0IFJlZ2lzdGVycyBhIFdlYiBFeHRlbnNpb24gd2l0aCB0aGUg
YXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yLgorICogQHBhcmFtIGV4dGVuc2lvbklEIEEgdW5pcXVl
IGlkZW50aWZpZXIgZm9yIHRoZSBleHRlbnNpb24uCisgKiBAcGFyYW0gZGlzcGxheU5hbWUgQSBs
b2NhbGl6ZWQgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9uLgorICogQHBhcmFtIGNvbXBs
ZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gcmVn
aXN0cmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgorICoKKyAqIFdlYiBFeHRlbnNpb25zIGluIFdl
YiBJbnNwZWN0b3IgYXJlIGFjdGl2ZSBhcyBzb29uIGFzIHRoZXkgYXJlIHJlZ2lzdGVyZWQuCisg
Ki8KKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9u
SUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051
bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyoqCisgKiBAYWJzdHJhY3QgVW5yZWdpc3Rl
cnMgYSBXZWIgRXh0ZW5zaW9uIHdpdGggdGhlIGFzc29jaWF0ZWQgV2ViIEluc3BlY3Rvci4KKyAq
IEBwYXJhbSBleHRlbnNpb25JRCBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZXh0ZW5zaW9u
LgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8g
YmUgY2FsbGVkIHdoZW4gdW5yZWdpc3RlcmluZyBzdWNjZWVkcyBvciBmYWlscy4KKyAqCisgKiBV
bnJlZ2lzdGVyaW5nIGFuIGV4dGVuc2lvbiB3aWxsIGF1dG9tYXRpY2FsbHkgY2xvc2UgYW55IGFz
c29jaWF0ZWQgc2lkZWJhcnMvdGFicy4KKyAqLworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9u
OihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qKgorICog
QGFic3RyYWN0IENsb3NlcyB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yIGluc3RhbmNlLiBU
aGlzIHdpbGwgY2F1c2UgYWxsCisgKiByZWdpc3RlcmVkIF9XS0luc3BlY3RvckV4dGVuc2lvbnMg
dG8gYmUgdW5yZWdpc3RlcmVkIGFuZCBpbnZhbGlkYXRlZC4KKyAqLworLSAodm9pZCljbG9zZTsK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRl
cm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ4MWZhZDMzNWJiZDg2NWEwOTQxYzBjZDA0YzU0YTQ5YTI1MjNh
MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQgIkFQSUluc3BlY3RvckV4dGVuc2lvbi5oIgor
I2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4g
c3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKKyAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBfV0tJbnNwZWN0b3JFeHRlbnNpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tJ
bnNwZWN0b3JFeHRlbnNpb24gKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4gX2V4dGVuc2lvbjsKK30KKworQGVu
ZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgK
aW5kZXggNThiMTAyNzAzMjRlZTkxNzM5MzBmOGM3YWRlOGJmY2Q3YzllNDRlZS4uZmZiZjg5YzUx
ZWUxODUyZTIwNWNkMmM3MGQ3OTcyZjEzYjQyN2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyLmgKQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0
IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uSG9zdC5oPgogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIApAQCAtNDMsNyArNDQsNyBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS1JlbW90ZVdlYkluc3BlY3RvckRlYnVnZ2Fi
bGVUeXBlKSB7CiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIuMyksIGlvcygxMC4zKSk7
CiAKIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMi4zKSwgaW9zKDEwLjMpKQotQGludGVy
ZmFjZSBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciA6IE5TT2JqZWN0CitAaW50
ZXJmYWNlIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIDogTlNPYmplY3QgPF9X
S0luc3BlY3RvckV4dGVuc2lvbkhvc3Q+CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24p
IGlkIDxfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCmluZGV4
IDY2YmYyNGRmODI2ZGFhOGU3Mjg0MjQ4ZmQxYjcyOGNiNWViZmYzNDMuLjczYzViZGNjYzU4MmU0
ZmY1MmNmMjUxOWE0YTE4ZDkyZTZmZWEwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTM0LDYgKzM0LDE2IEBACiAjaW1wb3J0ICJXS1dlYlZp
ZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5h
bC5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5z
cGVjdG9yRXh0ZW5zaW9uLmgiCisjaW1wb3J0ICJXS0Vycm9yLmgiCisjaW1wb3J0ICJXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2VuZGlmCisK
K05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgKCkKIC0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3Ry
aW5nICopbWVzc2FnZTsKIC0gKHZvaWQpY2xvc2VGcm9tRnJvbnRlbmQ7CkBAIC0xNjgsNiArMTc4
LDQyIEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdu
b3N0aWNMb2dnaW5nRGVsZWdhdGU+KWRlbGVnYXRlCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94
eS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoISFkZWxlZ2F0ZSk7CiB9CiAKKy8vIE1B
Uks6IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcworCistICh2b2lkKXJlZ2lzdGVy
RXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0
cmluZyAqKWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBf
TnVsbGFibGUsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhh
bmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9yZW1vdGVJ
bnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4
dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRy
KGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRC
bG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3MpIHsK
KyAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vy
cm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNl
ckluZm86bmlsXSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246
OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+bV9yZW1v
dGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpKSkgcmV0YWluXSBhdXRvcmVs
ZWFzZV0pOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
Om5pbF0sIG5pbCk7CisjZW5kaWYKK30KKworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5z
aW9uQ29udHJvbGxlcigpLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVuc2lvbklE
LCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgaWYg
KCFzdWNjZXNzKSB7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYXB0dXJlZEJsb2Nr
KG5pbCk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
bmlsXSk7CisjZW5kaWYKK30KKwogQGVuZAogCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKwogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggMDZmOGYxZjc2MmU4OTY4NmZjNWRj
M2ZjODkwZjEzZTBiMzYzZDMzMy4uZTRjZjVhMmRjMTAyZjU5NmQzYWVmZThjNjQ3YjZmNWFhOWI3
OWIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJTdHlsZVNoZWV0LmgKQEAgLTI5LDYgKzI5LDcgQEAKIE5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCiAKIEBjbGFzcyBfV0tVc2VyQ29udGVudFdvcmxkOworQGNsYXNzIFdLQ29udGVudFdvcmxk
OwogQGNsYXNzIFdLV2ViVmlldzsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLVXNl
clN0eWxlTGV2ZWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQppbmRleCAwNjg0NDEyYjEzNTFmMzBhNWQ0ODRmOTA5
ZDdhNGI5N2E3MWNhNDI2Li43OTE1ZWEzYjJmNjVkYTQ4Y2Y0ZWE5ODIwMjVhOTNlNGUxOGE3ZmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0
eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Vz
ZXJTdHlsZVNoZWV0Lm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVT
aGVldEludGVybmFsLmgiCiAKICNpbXBvcnQgIkFQSUFycmF5LmgiCisjaW1wb3J0ICJXS0NvbnRl
bnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldLTlNV
UkxFeHRyYXMuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5LmNwcAppbmRleCBlYzMxMGQ4YTMzODkwNWQyNmE5NDNkZGE2MTk3ZjEwZTI5MmM4OTlm
Li40YzZmNTRmMGYzY2JiMGIwMzFmY2U3NmRiMTc5MzUxMWJhNmE2Y2QyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAKQEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0
aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xNzUsNiArMTc5LDEwIEBAIHZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVj
dG9yUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3Bl
Y3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+KCptX2luc3BlY3RvclBhZ2UpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdl
QW5kV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKaW5kZXggZGViYTBmZWU2MjU2NDU2MjVk
NzYzOTZiMmIwNjVhMjEyYmY5MzgwOC4uOTRmNTM1NTRmYTEwOWFkYmQ3MjE5MDJjNTQ4YzIzYzA1
ZWFiZDhkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKQEAgLTU0LDYgKzU0LDkgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlZpZXc7CisjaWYg
RU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk7CisjZW5kaWYKIAogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHlDbGllbnQgewogcHVibGljOgpAQCAtODUsNiArODgsMTAgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2V4
dGVuc2lvbkNvbnRyb2xsZXI7IH0KKyNlbmRpZgorICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBOU1dpbmRvdyAqd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3cuZ2V0KCk7IH0KICAg
ICBXS1dlYlZpZXcgKndlYlZpZXcoKSBjb25zdDsKQEAgLTE0Niw2ICsxNTMsMTAgQEAgcHJpdmF0
ZToKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCogbV9jbGllbnQgeyBudWxscHRy
IH07CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRyIH07CiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7
CisjZW5kaWYKKyAgICAKICAgICBSZWY8QVBJOjpEZWJ1Z2dhYmxlSW5mbz4gbV9kZWJ1Z2dhYmxl
SW5mbzsKICAgICBTdHJpbmcgbV9iYWNrZW5kQ29tbWFuZHNVUkw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmlu
ZGV4IGYwZjdiMmRmNWU0MTkyYWM0NTQ4YjhmN2JjYjk5N2QxZjEzMGQ0NjAuLjA4MGIxNThmMDFm
N2JkOTZiMTAwMTQ0MTRkNTVjNGM3OGNhNTZhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyLmgiCkBAIC00MjEsNiArNDIyLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNy
ZWF0ZUZyb250ZW5kUGFnZSgpCiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+aWRlbnRpZmllcigpLCAqdGhpcyk7CiAgICAgbV9p
bnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqbV9pbnNw
ZWN0b3JQYWdlLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsKKworI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIg
PSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PigqbV9p
bnNwZWN0b3JQYWdlKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVu
TG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpCkBA
IC01NDYsNiArNTUxLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQ
YWdlQW5kV2luZG93KCkKICAgICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0Zm9ybURl
dGFjaCgpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5z
aW9uQ29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKKyAgICAKICAgICAvLyBOdWxsIG91dCBt
X2luc3BlY3RvclBhZ2UgYWZ0ZXIgcGxhdGZvcm1EZXRhY2goKSwgc28gdGhlIHZpZXdzIGNhbiBi
ZSBjbGVhbmVkIHVwIGNvcnJlY3RseS4KICAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwog
CkBAIC01NzEsNiArNTgwLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kTG9h
ZGVkKCkKIAogICAgIGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAg
YXV0b21hdGlvblNlc3Npb24tPmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCptX2luc3BlY3RlZFBh
Z2UpOworICAgIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVu
c2lvbkNvbnRyb2xsZXItPmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCk7CisjZW5kaWYKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YnJpbmdUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggMTRk
NDc3ZThkNzlhMWMzOTc5YWM1YTg5NzYwYmMzZGYwZjVlOWM4NC4uZjU1NDFiZjcwMjgxN2ViYzhi
ZTM2NTI1ZGFjMzA5Zjg2NTQ1OGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTY5LDYgKzcwLDkgQEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYkluc3Bl
Y3RvclByb3h5Q2xpZW50OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5j
ZXM7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk7CisjZW5kaWYKIAogZW51bSBjbGFzcyBBdHRhY2ht
ZW50U2lkZSB7CiAgICAgQm90dG9tLApAQCAtODAsNiArODQsNyBAQCBjbGFzcyBXZWJJbnNwZWN0
b3JQcm94eQogICAgIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
SW5zcGVjdG9yPgogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJs
aWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxXZWJJbnNwZWN0b3JQcm94eT4KICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBwdWJsaWMgV2Vi
Q29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyCiAjZW5kaWYKQEAgLTEwMiw2ICsxMDcsMTAgQEAg
cHVibGljOgogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW5zcGVjdGVkUGFnZTsgfQogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBl
eHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29udHJvbGxl
cjsgfQorI2VuZGlmCisKICAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFt
X2luc3BlY3RvclBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNWaXNpYmxlOyB9CiAgICAgYm9vbCBpc0Zyb250KCk7CkBAIC0yODYsNiArMjk1LDEwIEBAIHBy
aXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRyIH07CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yQ2xpZW50PiBtX2luc3BlY3RvckNsaWVu
dDsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29u
dHJvbGxlcjsKKyNlbmRpZgorICAgIAogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1Zpc2libGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0F0dGFjaGVkIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc0YmQ0MGQxZjQ3OWM5ODQ1YjU1NDM4OTY5MzFjOGVjMjc4ZWUx
MTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTAx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSkKKyAgICA6IG1faW5zcGVjdG9yUGFnZSht
YWtlV2Vha1B0cihpbnNwZWN0b3JQYWdlKSkKK3sKK30KKworV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSgpCit7CisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CisKKyAgICBhdXRvIGNhbGxiYWNrcyA9IHN0ZDo6
ZXhjaGFuZ2UobV9mcm9udGVuZExvYWRlZENhbGxiYWNrUXVldWUsIHsgfSk7CisgICAgZm9yIChh
dXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6d2hlbkZyb250ZW5kSGFz
TG9hZGVkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9mcm9udGVu
ZExvYWRlZCAmJiBtX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlLmFw
cGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6Omluc3BlY3RvckZyb250ZW5kTG9hZGVkKCkKK3sKKyAgICBBU1NF
UlQobV9pbnNwZWN0b3JQYWdlKTsKKworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisg
ICAgYXV0byBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFj
a1F1ZXVlLCB7IH0pOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAg
ICAgIGNhbGxiYWNrKCk7Cit9CisKKy8vIEFQSQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgd2hlbkZyb250ZW5kSGFz
TG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgZGlzcGxh
eU5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0
b3JQYWdlKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXI6OlJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0ZW5zaW9uSUQsIGRp
c3BsYXlOYW1lIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdpc3RlckV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgd2hlbkZyb250ZW5kSGFz
TG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcjo6VW5yZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklEIH0sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiYjVkY2M3ODI4
ZmI0OGJkNTBiMTk3NzQyOTQwMTNkM2EzZDZkNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IGZpbmFsCisgICAgOiBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5KTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpOwor
ICAgIHZpcnR1YWwgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KCk7CisK
KyAgICAvLyBBUEkuCisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OworCisgICAgLy8gTm90aWZpY2F0aW9ucy4KKyAgICB2b2lkIGluc3BlY3RvckZyb250ZW5kTG9h
ZGVkKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoRnVuY3Rp
b248dm9pZCgpPiYmKTsKKworICAgIFdlYWtQdHI8V2ViUGFnZVByb3h5PiBtX2luc3BlY3RvclBh
Z2U7CisgICAgYm9vbCBtX2Zyb250ZW5kTG9hZGVkIHsgZmFsc2UgfTsKKworICAgIC8vIFVzZWQg
dG8gcXVldWUgYWN0aW9ucyBzdWNoIGFzIHJlZ2lzdGVyaW5nIGV4dGVuc2lvbnMgdGhhdCBoYXBw
ZW4gZWFybHkgb24uCisgICAgLy8gVGhlcmUncyBubyBwb2ludCBzZW5kaW5nIHRoZXNlIGJlZm9y
ZSB0aGUgZnJvbnRlbmQgaXMgZnVsbHkgbG9hZGVkLgorICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lk
KCk+PiBtX2Zyb250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjRmYmZj
ZjBiNzA4MWRkZjIyN2Y3YTE2YWQzOGE1Yzk2N2Y3YjAxZC4uMGI0ZTNlYjg3NmI1MWQ1ZmE5MDc2
N2U2ZmU4ZmMxOWFhOWYzYjQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDEyLDggKzE0MTIsMTYgQEAKIAkJOTk1NUE2RjYxQzc5
ODZFMzAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RjIxQzc5ODY2NDAwRUI2
QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwICovOyB9OwogCQk5OTU1QTZGNzFD
Nzk4NkU1MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RjMxQzc5ODY2NDAwRUI2
QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLzsgfTsKIAkJOTk3ODhBQ0IxRjQy
MUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3ODhBQzkxRjQyMURD
QTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5Nzk2NTk1MjUyRkRG
MjgwMEIzMUFFMyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzk2NTk0MjUyRkRGMTYwMEIzMUFFMyAvKiBB
UElJbnNwZWN0b3JFeHRlbnNpb24uaCAqLzsgfTsKKwkJOTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUz
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5NjU5QTI1MzEwQTQ4MDBC
MzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLzsg
fTsKKwkJOTk3OTY1OUYyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5NjU5QjI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTk3
OTY1QTMyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzk2NUEyMjUzMTI4
QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk3OUNBNTgyMzdGNDlGMTAwMzlF
QzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5NzlDQTU3MjM3RjQ5RjAwMDM5RUMwNSAvKiBfV0tJbnNwZWN0
b3JQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTk5OTZBOUYyNTAwNEJDQzAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZhdGVGb3JU
ZXN0aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTk5NkE5RDI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3Rpbmcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OUIx
Njc1NzI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc1NDI1MkJCN0UwMDA3
MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlCMTY3NTgyNTJCQjdFMTAwNzMxNDBFIC8qIF9X
S0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc1NTI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLzsgfTsKKwkJOTlCMTY3NUIyNTJCQkFERDAwNzMxNDBF
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc1QTI1MkJCQUREMDA3MzE0
MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLzsgfTsKKwkJ
OTlCMTY3NjQyNTJCQkU2MjAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlC
MTY3NjEyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5oICovOyB9OwogCQk5OUMzQUUyRDFEQURBNkFEMDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNl
c3Npb25NYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5QzNBRTJDMURBREE2QTcwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jv
cy5oICovOyB9OwogCQk5OUM4MUQ1QTFDMjBFN0UyMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFE
NTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJOTlDODFE
NUQxQzIxRjM4QjAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4
MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi87IH07CkBAIC00NTE2LDkgKzQ1MjQsMjIgQEAK
IAkJOTk1NUE2RjMxQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvblByb3RvY29sT2Jq
ZWN0cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xP
YmplY3RzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5Nzg4QUM5
MUY0MjFEQ0EwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXV0b21hdGlvblNlc3Npb25Db25m
aWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5Nzg4QUNBMUY0MjFE
Q0EwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNv
bmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5Nzk2NTkzMjUy
RkRGMTYwMEIzMUFFMyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk3OTY1OTQyNTJGREYxNjAwQjMxQUUzIC8qIEFQSUlu
c3BlY3RvckV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJ
bnNwZWN0b3JFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk3OTY1
OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTk5Nzk2NTlCMjUzMTBBNDgwMEIzMUFFMyAv
KiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTk3OTY1QTIyNTMxMjhD
NzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUgLyogX1dLSW5zcGVj
dG9yUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0
b3JQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OTk2QTlEMjUwMDRC
Q0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTk5NkE5RTI1MDA0QkNCMDA0Rjc1NTkgLyog
X1dLSW5zcGVjdG9yVGVzdGluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS0luc3BlY3RvclRlc3RpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzU1MjUyQkI3RTEwMDczMTQwRSAv
KiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5OUIxNjc1NjI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIx
Njc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTlCMTY3NjAyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OUIxNjc2MTI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5OUIxNjc2MjI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTlDM0FFMjMxREFEOEUzNDAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXV0
b21hdGlvblNlc3Npb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNB
RTI2MURBRDk0ODUwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25D
b2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDM0FFMkMxREFEQTZBNzAw
QUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03MzA3LDYgKzczMjgsMTAgQEAKIAkJCQk5OTFGNDkyRTIzQTgx
MkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0gKi8sCiAJCQkJOTkw
MzZBRTEyM0E5NDlDRTAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJu
YWwuaCAqLywKIAkJCQk5MTk3OTQwQjIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVs
ZWdhdGUuaCAqLywKKwkJCQk5OUIxNjc1NDI1MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmggKi8sCisJCQkJOTlCMTY3NTYyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbi5tbSAqLywKKwkJCQk5OTc5NjVBMjI1MzEyOEM3MDBCMzFBRTMgLyogX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oICovLAorCQkJCTk5QjE2NzU1MjUyQkI3RTEwMDczMTQw
RSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICovLAogCQkJCTVDQUZERTQ0MjEz
MDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oICovLAogCQkJCTk5NzlDQTU3
MjM3RjQ5RjAwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggKi8sCiAJCQkJOTk5OTZB
OUQyNTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggKi8s
CkBAIC04NTYwLDYgKzg1ODUsOCBAQAogCQkJCTFDOEUyODMzMTI3NUQ3MzgwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JQcm94eS5jcHAgKi8sCiAJCQkJMUM4RTI4MzIxMjc1RDczODAwQkM3QkQwIC8q
IFdlYkluc3BlY3RvclByb3h5LmggKi8sCiAJCQkJMUM3N0MxOTUxMjg4QTg3MjAwNkE3NDJGIC8q
IFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTk5QjE2NzVEMjUyQkJFMEEw
MDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgKi8s
CisJCQkJOTlCMTY3NUEyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmggKi8sCiAJCQkJQTU1QkE4MjcxQkEzOEUxRTAwN0NEMzNEIC8qIFdl
Ykluc3BlY3RvclV0aWxpdGllcy5jcHAgKi8sCiAJCQkJQTU1QkE4MjgxQkEzOEUxRTAwN0NEMzNE
IC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5oICovLAogCQkJCUE1RUM2QUQyMjE1MUJENjkwMDY3
N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8sCkBAIC04NjI0LDYgKzg2NTEsOSBAQAog
CQkJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi8sCiAJ
CQkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8sCiAJCQkJ
MUM4OTFENjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluICov
LAorCQkJCTk5QjE2NzYwMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuY3BwICovLAorCQkJCTk5QjE2NzYxMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCAqLywKKwkJCQk5OUIxNjc2MjI1MkJCRTYx
MDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmlu
ICovLAogCQkJCUE1NDNFMzBBMjE1QzhBODQwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFy
Z2V0LmNwcCAqLywKIAkJCQlBNTQzRTMwODIxNUM4QTgzMDAyNzlDRDkgLyogV2ViUGFnZUluc3Bl
Y3RvclRhcmdldC5oICovLAogCQkJCUE1NDNFMzA5MjE1QzhBODMwMDI3OUNEOSAvKiBXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5jcHAgKi8sCkBAIC05MjQwLDYgKzkyNzAsOCBAQAog
CQkJCTUxNDNCMjYxMURERDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5oICov
LAogCQkJCTdBOEE5RDU3MUVGMTE5QUEwMDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oICovLAogCQkJCTkxOTc5NDA5MjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGll
bnQuaCAqLywKKwkJCQk5OTc5NjU5MzI1MkZERjE2MDBCMzFBRTMgLyogQVBJSW5zcGVjdG9yRXh0
ZW5zaW9uLmNwcCAqLywKKwkJCQk5OTc5NjU5NDI1MkZERjE2MDBCMzFBRTMgLyogQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmggKi8sCiAJCQkJMzFCMzYyOTAyMTQxRUFCQzAwN0JGQTUzIC8qIEFQSUlu
dGVybmFsRGVidWdGZWF0dXJlLmNwcCAqLywKIAkJCQkzMUIzNjI4RTIxNDFFQTREMDA3QkZBNTMg
LyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBD
N0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCAqLywKQEAgLTEwMjcxLDYg
KzEwMzAzLDggQEAKIAkJCQkxQzhFMkEzMjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
TWVzc2FnZXMuaCAqLywKIAkJCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVj
dG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3
NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJOTk3OTY1OUIyNTMx
MEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCisJCQkJOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUNCQkU0OUUxOUI2
NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICov
LAogCQkJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwICovLApAQCAtMTA2ODIsNiArMTA3MTYsOSBAQAogCQkJCTk5MUY0OTJGMjNB
ODEyQzYwMDU0NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTkwMzZBRTIyM0E5NDlDRjAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDBDMjNEQkM1MDMwMDI1
Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlCMTY3
NTcyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTk3OTY1QTMyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lv
bkhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QjE2NzU4MjUyQkI3RTEwMDczMTQwRSAvKiBf
V0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNBRkRF
NDcyMTMwODQ2QTAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OTc5Q0E1ODIzN0Y0OUYxMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTk5OTZBOUYyNTAwNEJDQzAwNEY3NTU5IC8qIF9XS0luc3Bl
Y3RvclByaXZhdGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNzkyLDYgKzEwODI5
LDcgQEAKIAkJCQk3QThBOUQ1QzFFRjE0NTk4MDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVQ
YWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzY5MDc5QTE4RjMx
Q0IyMDAxREZGMDQgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkxOTc5NDBBMjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk5Nzk2NTk1MjUyRkRGMjgwMEIzMUFFMyAvKiBBUElJbnNw
ZWN0b3JFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQjM2MjhGMjE0MUVBNUQwMDdC
RkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NF
NEQyMDcxQTQ2Nzc2MTAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTI0NjRGMzE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTExNDA4LDYgKzExNDQ2LDkgQEAKIAkJCQkxQzhF
MjgzNDEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QjE2NzY0MjUyQkJFNjIwMDczMTQw
RSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTk5Nzk2NTlFMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlCMTY3NUIyNTJCQkFERDAw
NzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1QkE4MkIxQkEzOEU2MTAwN0NEMzNEIC8q
IFdlYkluc3BlY3RvclV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBOTQ0QTAxODg0
RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MzE3OSw2ICsxMzIyMCw3IEBACiAJCQkJRkVEQkRDRDYxRTY4RDIwMDAwQTU5RjhGIC8qIFdlYklu
c3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUM4RTJBMzUxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4Qjk0NTEyN0M4ODJBMDA1NzZDMkIg
LyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTk3OTY1OUYyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0JCRTRBMDE5
QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ5MkE3OEEyMTJCNkFCMTAwRjQ5M0ZEIC8qIFdlYktleWJvYXJkRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MjgwRjMxOTE5OTgyQTAwNkFEOUY5IC8qIFdl
YktpdC5tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlci5jcHAKaW5kZXggOWMzN2IwMDNjMWNiNzcxZDliM2Y3OWRkYTY1NTJhNDkwN2Q3ZWRk
Ny4uM2VjYWFmOGU4OGRmOWMzMzFlMDM0OGVkYTUwMzc0YTRmMTAyNzMxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcApAQCAtNzAsNiArNzAsMjIgQEAg
dm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OnVuc3VzcGVuZCgpCiAgICAg
ZXZhbHVhdGVRdWV1ZWRFeHByZXNzaW9ucygpOwogfQogCit2b2lkIFdlYkluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCwg
VmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+JiYgYXJndW1lbnRzKQoreworICAgIFN0cmluZ0J1aWxk
ZXIgZXhwcmVzc2lvbjsKKyAgICBleHByZXNzaW9uLmFwcGVuZExpdGVyYWwoIkluc3BlY3RvckZy
b250ZW5kQVBJLmRpc3BhdGNoKFtcIiIpOworICAgIGV4cHJlc3Npb24uYXBwZW5kKGNvbW1hbmQp
OworICAgIGV4cHJlc3Npb24uYXBwZW5kTGl0ZXJhbCgiXCIiKTsKKworICAgIGZvciAoYXV0byYg
YXJndW1lbnQgOiBhcmd1bWVudHMpIHsKKyAgICAgICAgZXhwcmVzc2lvbi5hcHBlbmRMaXRlcmFs
KCIsICIpOworICAgICAgICBhcmd1bWVudC0+d3JpdGVKU09OKGV4cHJlc3Npb24pOworICAgIH0K
KworICAgIGV4cHJlc3Npb24uYXBwZW5kTGl0ZXJhbCgiXSkiKTsKKyAgICBldmFsdWF0ZU9yUXVl
dWVFeHByZXNzaW9uKGV4cHJlc3Npb24udG9TdHJpbmcoKSk7Cit9CisKIHZvaWQgV2ViSW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOjpkaXNwYXRjaENvbW1hbmQoY29uc3QgU3RyaW5nJiBj
b21tYW5kKQogewogICAgIGV2YWx1YXRlT3JRdWV1ZUV4cHJlc3Npb24obWFrZVN0cmluZygiSW5z
cGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiXSkiKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaAppbmRleCBkYjY5MGU0YTQxNjA3
YWRmMTAzNGNiOGU0NWEwZmIwZjVkNjVmZDY5Li41OGVjZWI0MzUyODY0YWFhNTk2NDgyYTQ5MDBl
NTZjMzlkMDJhMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CisjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Miw5ICs0MywxMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCB1bnN1c3BlbmQoKTsKIAorICAgIHZvaWQg
ZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgVmVjdG9yPFJlZjxKU09OOjpW
YWx1ZT4+JiYgYXJndW1lbnRzKTsKKyAgICAvLyBGSVhNRTogc3dpdGNoIGNhbGxlcnMgb2YgdGhl
c2UgbWV0aG9kcyBvdmVyIHRvIHRoZSBKU09OOjpWYWx1ZSBiYXNlZCB2ZXJzaW9uLgogICAgIHZv
aWQgZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAgICAgdm9pZCBkaXNw
YXRjaENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50
KTsKLSAgICB2b2lkIGRpc3BhdGNoQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wg
YXJndW1lbnQpOworICAgIHZvaWQgZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFu
ZCwgYm9vbAorICAgIGFyZ3VtZW50KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUFzeW5jKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICB2b2lkIGV2YWx1YXRlRXhwcmVzc2lvbkZvclRl
c3RpbmcoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IGQ3OWJmOGJjN2JkYTcwMGRkZWY2
MjQwZWRkNDllYjI0ZDM0NzJhYjQuLmYyY2RhYmUyY2FhMDdkZjRhODZiYzkzZjNlMzZiYjI4Zjgx
MzVkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0zNiwxMCArMzYsMTUgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0RPTVdyYXBwZXJXb3JsZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY1
LDYgKzcwLDggQEAgV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBhZ2UmIHBhZ2Up
CiAgICAgV2ViSW5zcGVjdG9yVUk6OmVuYWJsZUZyb250ZW5kRmVhdHVyZXMoKTsKIH0KIAorV2Vi
SW5zcGVjdG9yVUk6On5XZWJJbnNwZWN0b3JVSSgpID0gZGVmYXVsdDsKKwogdm9pZCBXZWJJbnNw
ZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIGluc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyLCBjb25zdCBEZWJ1Z2dhYmxlSW5mb0RhdGEmIGRlYnVnZ2FibGVJ
bmZvLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogewogICAgIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKQEAgLTcy
LDYgKzc5LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlCiAgICAgbV91bmRlclRlc3QgPSB1
bmRlclRlc3Q7CiAgICAgbV9pbnNwZWN0aW9uTGV2ZWwgPSBpbnNwZWN0aW9uTGV2ZWw7CiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVy
ID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI+KCp0aGlzKTsK
KyNlbmRpZgorICAgIAogICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLnJlc2V0KCk7CiAKICAg
ICBtX2Zyb250ZW5kQ29udHJvbGxlciA9ICZtX3BhZ2UuY29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpOwpAQCAtMTY1LDYgKzE3NiwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9z
ZVdpbmRvdygpCiAKICAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1f
dW5kZXJUZXN0ID0gZmFsc2U7CisgICAgCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3JVSTo6cmVvcGVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAppbmRleCAwMjZhNzEyYTA4OTlkMDQ1NWYz
MTg1YWI3OTc2YzE0MDA1ZDhlYmFiLi5kNjA1YzFmMTlhNjY1MDhlMDExZjY5YTY1YzU0MGFmMmM2
OTJiYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSS5oCkBAIC0zMSwxMCArMzEsMTEgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JEZWJ1Z2dhYmxlVHlw
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9zdC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7
CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBj
bGFzcyBGbG9hdFJlY3Q7CiB9CkBAIC00MiwxMCArNDMsMTggQEAgY2xhc3MgRmxvYXRSZWN0Owog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7CisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOwor
I2VuZGlmCiAKLWNsYXNzIFdlYkluc3BlY3RvclVJIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViSW5z
cGVjdG9yVUk+LCBwcml2YXRlIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgeworY2xhc3MgV2ViSW5zcGVjdG9yVUkgZmluYWwK
KyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkluc3BlY3RvclVJPgorICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFdlYkluc3BlY3RvclVJPgorICAgICwgcHJpdmF0ZSBJUEM6OkNvbm5lY3Rp
b246OkNsaWVudAorICAgICwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYkluc3BlY3RvclVJPiBjcmVhdGUoV2ViUGFn
ZSYpOworICAgIHZpcnR1YWwgfldlYkluc3BlY3RvclVJKCk7CiAKICAgICBzdGF0aWMgdm9pZCBl
bmFibGVGcm9udGVuZEZlYXR1cmVzKCk7CiAKQEAgLTE0OCw2ICsxNTcsOSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV91bmRlclRlc3Q7IH0K
IAorICAgIFdlYlBhZ2UmIGZyb250ZW5kUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQor
ICAgIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRj
aGVyKCkgeyByZXR1cm4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7IH0KKwogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSShXZWJQYWdlJik7CiAKQEAgLTE1OSw2ICsxNzEsMTAg
QEAgcHJpdmF0ZToKICAgICAvLyBjb3JlUGFnZSgpLCBzaW5jZSB3ZSBtYXkgbmVlZCBpdCBhZnRl
ciB0aGUgZnJvbnRlbmQncyBwYWdlIGhhcyBzdGFydGVkIGRlc3RydWN0aW9uLgogICAgIFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIG1fZnJvbnRlbmRDb250cm9sbGVyIHsgbnVsbHB0ciB9
OwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI+IG1fZXh0ZW5zaW9uQ29udHJvbGxl
cjsKKyNlbmRpZgorCiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyOwogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9OwogICAgIERlYnVnZ2Fi
bGVJbmZvRGF0YSBtX2RlYnVnZ2FibGVJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMDFmNThjODcyMDk1MGQ2YzdlOWQ3OTBj
NmI4Y2M1YWZhMjRlMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKQEAgLTAs
MCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNs
dWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIoV2ViSW5zcGVjdG9yVUkmIGluc3BlY3RvcikKKyAgICA6IG1f
aW5zcGVjdG9yKG1ha2VXZWFrUHRyKGluc3BlY3RvcikpCit7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworfQorCitXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcigqdGhpcyk7Cit9CisKKy8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ciBJUEMgbWVzc2FnZXMuCisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
OjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIEFTU0VSVChtX2luc3BlY3Rvcik7CisKKyAgICBWZWN0b3I8UmVm
PEpTT046OlZhbHVlPj4gYXJndW1lbnRzIHsgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25J
RCksIEpTT046OlZhbHVlOjpjcmVhdGUoZGlzcGxheU5hbWUpIH07CisgICAgbV9pbnNwZWN0b3It
PmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZCgicmVnaXN0ZXJFeHRlbnNp
b24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSk7CisKKyAgICAvLyBGSVhNRTogdXNlIHJldHVybiB2
YWx1ZSBvZiB0aGUgZXZhbHVhdGlvbiB0byBkZXRlcm1pbmUgaWYgd2Ugc3VjY2VlZGVkIG9yIGZh
aWxlZC4KKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBleHRlbnNpb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9pbnNwZWN0b3IpOworCisgICAgVmVjdG9yPFJlZjxK
U09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQp
IH07CisgICAgbV9pbnNwZWN0b3ItPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29t
bWFuZCgidW5yZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpKTsKKworICAg
IC8vIEZJWE1FOiB1c2UgcmV0dXJuIHZhbHVlIG9mIHRoZSBldmFsdWF0aW9uIHRvIGRldGVybWlu
ZSBpZiB3ZSBzdWNjZWVkZWQgb3IgZmFpbGVkLgorICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZjMjVmMDNjNjA4ZDkzZGJhOTMzOGQxNWY3NDdlYzEzNmYxNjI5NmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKwor
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJJbnNwZWN0b3JVSTsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcihXZWJJbnNwZWN0b3JVSSYpOworICAgIH5XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIoKTsKKworICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlk
ZTsKKworICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVzc2Fn
ZXMuCisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklE
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNp
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAg
V2Vha1B0cjxXZWJJbnNwZWN0b3JVST4gbV9pbnNwZWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDk3NTc4MTY1MTMzOThkOGI1MDQ2NWFjMWYwNjdlMTgzNzI3YWFkZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK
KyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKKworbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyIE5vdFJlZkNvdW50ZWQgeworICAgIFJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBl
eHRlbnNpb25JRCwgU3RyaW5nIGRpc3BsYXlOYW1lKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYwor
ICAgIFVucmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklEKSAtPiAoYm9vbCBzdWNj
ZXNzKSBBc3luYworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNNYWMuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc01hYy5jbWFrZQppbmRleCBhMjc1NDk1YmE1MmU3YWVjMWU1NTU1MmM5MmUxNmRjNDcx
ZDdjM2U0Li5lOWRkY2Q5ZTg0NjcxM2NiYmMzMzE4NGJiODE2NTljNTk4MWExNjVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc01hYy5jbWFrZQpAQCAtNTAsNiArNTAsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUyBQ
UklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOUFVU
X1RZUEVfQ09MT1IgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTIFBSSVZBVEUgT04pCitXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5TUEVDVE9SX0VYVEVOU0lPTlMg
UFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlNQ
RUNUT1JfVEVMRU1FVFJZIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCBQ
UklWQVRFIE9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtl
IGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IGEyZmY1M2RkNjIxYzVm
YzQ3NzBhYzJkNzgzMTZlYjVlOGM5YjAzODYuLjgwMTYyZmFlODJkMjBjZGY3ZmVhNDdkOGNhOTFl
NWVlMzFiZTQ3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTE1MSw2ICsxNTEs
NyBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5F
KEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUgIlRvZ2dsZSBJbnB1dCBUeXBlIFRpbWUgc3VwcG9ydCIg
UFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVf
V0VFSyAiVG9nZ2xlIElucHV0IFR5cGUgV2VlayBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBX
RUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVS
UyAiVG9nZ2xlIGluc3BlY3RvciBhbHRlcm5hdGUgZGlzcGF0Y2hlcnMgc3VwcG9ydCIgUFJJVkFU
RSBPRkYpCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOU1BFQ1RPUl9FWFRFTlNJ
T05TICJUb2dnbGUgaW5zcGVjdG9yIHdlYiBleHRlbnNpb25zIHN1cHBvcnQiIFBSSVZBVEUgT0ZG
KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlNQRUNUT1JfVEVMRU1FVFJZICJU
b2dnbGUgaW5zcGVjdG9yIHRlbGVtZXRyeSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRklORShFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSICJFbmFibGUgSW50
ZXJzZWN0aW9uIE9ic2VydmVyIHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUyAiVG9nZ2xlIGlPUyBnZXN0dXJlIGV2
ZW50cyBzdXBwb3J0IiBQUklWQVRFIE9GRikKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBhNGFlZjM5ZGFkNjU4MTM4MDRlZGMxNmM3NDU0MTBkMzY0NDM4MGNkLi5mMGNh
ZWNiZjUyNTJjZWYzYTk1OGNjMjhiYjgwMzEyMWQ3ZTk1YTk1IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMTYgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5z
aW9uczogQWRkIF9XS0luc3BlY3RvckV4dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82OTk2ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zTWFjLmNtYWtlOgor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKyAgICAgICAgQWRk
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUyksIHdoaWNoIGlzIG9ubHkgb24gZm9yIHRoZSBD
b2NvYSBtYWNPUyBwb3J0LgorCiAyMDIwLTEwLTE0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgQUNDRUxFUkFURURfMkRfQ0FOVkFTIGJ1aWxk
IGZsYWdzIGFuZCBndWFyZGVkIGNvZGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411622</attachid>
            <date>2020-10-16 15:12:23 -0700</date>
            <delta_ts>2020-11-03 14:54:48 -0800</delta_ts>
            <desc>Patch v1.3</desc>
            <filename>bug-217783-20201016151222.patch</filename>
            <type>text/plain</type>
            <size>94395</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI0MzAwZjM1ZTg4OGI5NDZmZjcwY2I5
ODdmYzBlZTNiYjRkYzc4ZjQuLjViZGFmYzkyODk2NzZlOWE0NDM0N2VhZWRiZWNmYjFhZmE5Yjc5
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMTYgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9X
S0luc3BlY3RvckV4dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82OTk2ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmg6CisgICAgICAgIEFkZCBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
LCB3aGljaCBpcyBvbmx5IG9uIGZvciB0aGUgQ29jb2EgbWFjT1MgcG9ydC4KKwogMjAyMC0xMC0x
NiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE9wZW4gc291
cmNlIGNsYW5nIHdhcm5pbmc6IGJpdHdpc2Ugb3BlcmF0aW9uIGJldHdlZW4gZGlmZmVyZW50IGVu
dW1lcmF0aW9uIHR5cGVzIFstV2VudW0tZW51bS1jb252ZXJzaW9uXQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKaW5kZXggYWE2Y2NmN2UyYzJjNTNiNWY3YWVkMDZkZjBlZmFhMzQ3NTUwMTFjYS4uZjJk
OWVjMmI4MWQ2ODBkNzY2MDk2NzhmYjhlZmMyYzlmNDZhOTg1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMTAtMTYgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9X
S0luc3BlY3RvckV4dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82OTk2ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOiBBZGQgbmV3IGZpbGVzLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qczoK
KyAgICAgICAgKFdJLkFwcENvbnRyb2xsZXJCYXNlKToKKyAgICAgICAgKFdJLkFwcENvbnRyb2xs
ZXJCYXNlLnByb3RvdHlwZS5nZXQgZXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIEhhbmcg
dGhlIGV4dGVuc2lvbiBjb250cm9sbGVyIG9mZiBvZiB0aGUgZ2xvYmFsIHNpbmdsZXRvbiwgYXMg
dGhlcmUgY2FuIG9ubHkgYmUgb25lLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JF
eHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAg
IChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS51bnJlZ2lzdGVy
RXh0ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIEZvciBub3csIGp1c3Qga2VlcCB0aGUgVVVJRHMg
aW4gYSBtYXAgYW5kIGxvZyB0aGUgcmVzdWx0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9N
b2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5wcm90b3R5cGUu
Z2V0IGV4dGVuc2lvbklEKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5wcm90
b3R5cGUuZ2V0IGRpc3BsYXlOYW1lKToKKyAgICAgICAgQWRkZWQuIFRoaXMgaXMgYSBkYXRhIG9i
amVjdCBmb3Igbm93LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0
b3JGcm9udGVuZEFQSS5qczoKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLmxvYWRDb21w
bGV0ZWQpOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkucmVnaXN0ZXJFeHRlbnNpb24p
OgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkudW5yZWdpc3RlckV4dGVuc2lvbik6Cisg
ICAgICAgIEFkZGVkLiBGb3J3YXJkIGludm9jYXRpb25zIHRvIHRoZSBleHRlbnNpb24gY29udHJv
bGxlci4KKwogMjAyMC0xMC0xNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTihyMjY3MTQ4KTogbmV3IEJpZyBTdXIg
c3R5bGVzIGFyZSBub3QgdXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5YzBiODQ5ZDRjNzQxYTc4N2MxM2VlMWVi
ZDhmM2I1YzY5ODhjNzFiLi45MjgwZjM2YWNmNDc1ZDBlOGM2MTIwMzBlMjlhZGEzNWIzYmYyYWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAyMC0xMC0xNiAgQnJpYW4gQnVyZyAgPGJi
dXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEluc3BlY3RvciBFeHRlbnNpb25zOiBB
ZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFuZCByZWxhdGVkIHBsdW1iaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3ODMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzY5OTY4Nzg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIF9XS0luc3BlY3RvckV4dGVuc2lvbiBpcyBuZXcgU1BJIHRoYXQgcmVw
cmVzZW50cyBhIFdlYiBFeHRlbnNpb24gdGhhdCB1c2VzIHRoZSAnZGV2dG9vbHMnCisgICAgICAg
IEFQSSB0byBpbnRlcmFjdCB3aXRoIFdlYiBJbnNwZWN0b3IuIEFuIGV4dGVuc2lvbiBpcyBhc3Nv
Y2lhdGVkIHdpdGggaXRzIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuCisgICAgICAgIEEgV2Vi
S2l0IGNsaWVudCB0aGF0IHN1cHBvcnRzIFdlYiBFeHRlbnNpb25zIGNhbiB1c2UgdGhpcyBjbGFz
cyB0byBpbXBsZW1lbnQgJ2RldnRvb2xzJyBleHRlbnNpb24gQVBJcy4KKworICAgICAgICBBZGQg
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBtZXRob2RzIHRvIHJlZ2lzdGVyIGFuZCB1bnJlZ2lz
dGVyIGFuIGV4dGVuc2lvbi4KKyAgICAgICAgQWRkIHBsdW1iaW5nIHNvIHRoYXQgdGhlIGV4dGVu
c2lvbiBpbiByZWdpc3RlcmVkIGluIHRoZSBmcm9udGVuZCB3aXRoIFdJLldlYkV4dGVuc2lvbkNv
bnRyb2xsZXIuCisKKyAgICAgICAgTGF0ZXIgcGF0Y2hlcyB3aWxsIGZsZXNoIG91dCB0aGUgbmVl
ZGVkIGZ1bmN0aW9uYWxpdHkgdG8gaW1wbGVtZW50IHJlc3Qgb2YgdGhlICdkZXZ0b29scycgQVBJ
LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
Lm1ha2U6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgor
ICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVj
dDo6bmV3T2JqZWN0KToKKyAgICAgICAgTmV3IEFQSSBvYmplY3QgdHlwZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0
b3JFeHRlbnNpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6
SW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjp+
SW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIFRoaXMgaXMgYSBwbGFjZWhvbGRl
ciBvYmplY3QgdGhhdCdzIHVzZWQgZm9yIHRoZSB3cmFwcGVyIHN5c3RlbSwKKyAgICAgICAgc2lu
Y2Ugd2UgZG9uJ3QgaGF2ZSBzaW5nbGUgQysrIG9iamVjdHMgZm9yIGVhY2ggZXh0ZW5zaW9uIHRv
IGJhY2sgdGhlIEFQSSBvYmplY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3Rvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Lm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlz
cGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvciB1
bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBJbXBsZW1l
bnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8gdGhl
IEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb24ubW06CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lv
biBfYXBpT2JqZWN0XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBleHRlbnNp
b25JRF0pOgorICAgICAgICBBZGRlZC4gVGhpcyBpcyBhIGRhdGEgb2JqZWN0IHRoYXQncyBhbHNv
IHVzZWQgYXMgYSB0b2tlbiB0byB1bnJlZ2lzdGVyIHRoZSBleHRlbnNpb24uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaDogQWRkIG5l
dyBTUEkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNp
b25JbnRlcm5hbC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElE
OmRpc3BsYXlOYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICBJbXBsZW1lbnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lvbkhv
c3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8gdGhlIEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmV4dGVuc2lvbkNvbnRyb2xs
ZXIgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
Y3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KToKKyAgICAgICAgU2V0IHVwIHRoZSBleHRlbnNp
b24gY29udHJvbGxlciBvYmplY3QgYWZ0ZXIgdGhlIGZyb250ZW5kIGhhcyBiZWVuIGNyZWF0ZWQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFu
ZFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZExv
YWRlZCk6CisgICAgICAgIFNldCB1cCB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xsZXIgb2JqZWN0IGFm
dGVyIHRoZSBmcm9udGVuZCBoYXMgYmVlbiBjcmVhdGVkLgorCisgICAgICAgICogVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6ZXh0ZW5zaW9uQ29udHJvbGxlciBjb25zdCk6IEFkZGVkLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Ojp3aGVuRnJvbnRlbmRIYXNMb2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIEFkZGVk
LiBGb3J3YXJkIEFQSSByZXF1ZXN0cyB0byB0aGUgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNz
IHRvIGJlIGV2YWx1YXRlZCBpbiB0aGUgZnJvbnRlbmQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6
OmRpc3BhdGNoQ29tbWFuZCk6CisgICAgICAgIEFkZCBhIG1vcmUgZ2VuZXJpYyB3YXkgdG8gZW5j
b2RlIHZhbHVlcyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIEluc3BlY3RvckZyb250ZW5k
QVBJLmRpc3BhdGNoLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29u
bmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kUGFnZSBjb25zdCk6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRBUElEaXNwYXRjaGVyKTog
QWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24pOgor
ICAgICAgICBIYW5kbGUgaW5jb21pbmcgbWVzc2FnZXMgYnkgZm9yd2FyZGluZyB0aGUgYXNzb2Np
YXRlZCBjb21tYW5kIHRvIFdJLldlYkV4dGVuc2lvbkNvbnRyb2xsZXIKKyAgICAgICAgdmlhIElu
c3BlY3RvckZyb250ZW5kQVBJIGV2YWx1YXRpb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQubW06CisgICAgICAgIEZhbGxvdXQgZnJvbSB1bmlmaWVkIGJ1
aWxkIGNodW5raW5nIHNoaWZ0cy4KKwogMjAyMC0xMC0xNiAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEltcGxlbWVudCBWaWRl
b1BsYXliYWNrTWV0cmljcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZTIyMjk4NzViNDc3
YjFjNmJhYmJjNWZlZGQ5N2NhNTcyOTFkM2MyMy4uMGQ2NjY0MTc4NmViZTk0NjdhZTA1OTZkNTA3
N2ExNjA1OTdlODA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC0zMjgsNiArMzI4LDEw
IEBACiAjZGVmaW5lIEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTIDAKICNl
bmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0lOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2RlZmlu
ZSBFTkFCTEVfSU5TUEVDVE9SX0VYVEVOU0lPTlMgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChF
TkFCTEVfSU5TUEVDVE9SX1RFTEVNRVRSWSkKICNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUl9URUxF
TUVUUlkgMAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZUNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKaW5kZXggOTNm
YWZkYTExNGM5OTJiNjQzMDk1ZDFiMmI5NzQ2NDJmMzY4OGNiMC4uNWYzOGE2OGM1NWQzMGNmNWU4
ZjM2Nzk4NzRmMzFjNzExYjM1ODBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FbmFibGVDb2NvYS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2Eu
aApAQCAtMjcyLDYgKzI3MiwxMCBAQAogI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUyAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9JTlNQRUNUT1Jf
RVhURU5TSU9OUykgJiYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBFTkFCTEVfSU5TUEVDVE9SX0VY
VEVOU0lPTlMgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SX1RFTEVN
RVRSWSkKICNkZWZpbmUgRU5BQkxFX0lOU1BFQ1RPUl9URUxFTUVUUlkgMQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCAwM2Q1Mzg5YTRjNzJhZGU5MTVhZmFkY2E1NmNmZGNiZWFkYWEyNzQy
Li5iMmUxMjc4YzQzMTE5YWNkMGFiNzUwMzFiODFiMWE2MThlMjQ1M2NkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKQEAgLTY5MSw2ICs2OTEsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUFERVJTCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dhYmxlVHlw
ZS5oCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
SG9zdC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzCmluZGV4IDYxZDRj
NDU5NDRkYjY2OTU1ZDAwMDk3M2EzZTZkZWEzYWU2NmVhNTYuLjk2ZGZiMGU2NmVmMTUxODExMjY0
ODFkYTMxY2IxOTQxNGVmMzE1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXJCYXNlLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXJC
YXNlLmpzCkBAIC00MSwxMSArNDEsMTQgQEAgV0kuQXBwQ29udHJvbGxlckJhc2UgPSBjbGFzcyBB
cHBDb250cm9sbGVyQmFzZQogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CiAgICAgICAgIHRoaXMu
X2luaXRpYWxpemVkID0gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uQ29udHJvbGxl
ciA9IG5ldyBXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyOwogICAgIH0KIAogICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IGRlYnVnZ2FibGVUeXBlKCkgeyB0aHJvdyBXSS5Ob3RJbXBsZW1lbnRlZEVy
cm9yLnN1YmNsYXNzTXVzdE92ZXJyaWRlKCk7IH0KKyAgICBnZXQgZXh0ZW5zaW9uQ29udHJvbGxl
cigpIHsgcmV0dXJuIHRoaXMuX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KIAogICAgIC8vIFNpbmNl
IHZhcmlvdXMgbWVtYmVycyBvZiB0aGUgYXBwIGNvbnRyb2xsZXIgZGVwZW5kIG9uIHRoZSBnbG9i
YWwgc2luZ2xldG9uIHRvIGV4aXN0LAogICAgIC8vIHNvbWUgaW5pdGlhbGl6YXRpb24gbmVlZHMg
dG8gaGFwcGVuIGFmdGVyIHRoZSBhcHAgY29udHJvbGxlciBoYXMgYmVlbiBjb25zdHJ1Y3RlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYTFjZWViMDFlZGNiZWQwMzRlMzYzZGY5YzM1OTk3OWM0
YmUxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyID0gY2xh
c3MgV2ViRXh0ZW5zaW9uQ29udHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0
cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZXh0ZW5z
aW9uSURNYXAgPSBuZXcgTWFwOworICAgIH0KKworICAgIHJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVu
c2lvbklELCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9leHRlbnNpb25J
RE1hcC5oYXMoZXh0ZW5zaW9uSUQpKSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEV4
Y2VwdGlvbigiVW5hYmxlIHRvIHJlZ2lzdGVyIGV4dGVuc2lvbiwgaXQncyBhbHJlYWR5IHJlZ2lz
dGVyZWQ6ICIsIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBsZXQgZXh0ZW5zaW9uID0gbmV3IFdJLldlYkV4dGVuc2lv
bihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOworICAgICAgICB0aGlzLl9leHRlbnNpb25JRE1h
cC5zZXQoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbik7CisKKyAgICAgICAgY29uc29sZS5sb2coIlJl
Z2lzdGVyZWQgZXh0ZW5zaW9uOiAiLCBleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5XZWJFeHRlbnNpb25Db250cm9sbGVy
LkV2ZW50LkV4dGVuc2lvbkFkZGVkLCB7ZXh0ZW5zaW9ufSk7CisgICAgfQorCisgICAgdW5yZWdp
c3RlckV4dGVuc2lvbihleHRlbnNpb25JRCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZXh0
ZW5zaW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgeworICAgICAgICAgICAgY29uc29sZS5yZXBv
cnRJbnRlcm5hbEV4Y2VwdGlvbigiVW5hYmxlIHRvIHVucmVnaXN0ZXIgZXh0ZW5zaW9uIHdpdGgg
dW5rbm93biBJRDogIiwgZXh0ZW5zaW9uSUQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgbGV0IGV4dGVuc2lvbiA9IHRoaXMuX2V4dGVuc2lvbklETWFwLmdldChl
eHRlbnNpb25JRCk7CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbklETWFwLmRlbGV0ZShleHRlbnNp
b25JRCk7CisKKyAgICAgICAgY29uc29sZS5sb2coIlVucmVnaXN0ZXJlZCBleHRlbnNpb246ICIs
IGV4dGVuc2lvbklEKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
V2ViRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudC5FeHRlbnNpb25SZW1vdmVkLCB7ZXh0ZW5zaW9u
fSk7CisgICAgfQorfTsKKworV0kuV2ViRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudCA9IHsKKyAg
ICBFeHRlbnNpb25BZGRlZDogImV4dGVuc2lvbi1hZGRlZCIsCisgICAgRXh0ZW5zaW9uUmVtb3Zl
ZDogImV4dGVuc2lvbi1yZW1vdmVkIiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggZTQxYTA4YWVlMTE1YTk0N2Y0NDE0ZGNjYTU1MzJk
ZDU4N2RlYWUyMy4uNDhiOTQzNWRkNTdmMmNmYzUzNTU1YjE1YmJjNjZiY2U3MTc1ZDIyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtNDg2
LDYgKzQ4Niw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9UeXBlRGVzY3JpcHRpb24uanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVHlwZVNldC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9VUkxCcmVha3BvaW50LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XZWJTb2NrZXRSZXNvdXJjZS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVkUHJvbWlzZS5qcyI+PC9zY3JpcHQ+CiAK
QEAgLTg4OCw2ICs4ODksNyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9IQVJCdWls
ZGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvSGVhcE1hbmFn
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9JbmRleGVkREJN
YW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL0phdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0phdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblBy
b3ZpZGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvTGF5ZXJU
cmVlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lv
bi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNTQ4MWU1NjZmNTg0NGM3MmRiZDkzNDI2YWI3ODFlNzExYjA2MWE2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcwpAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uID0gY2xhc3MgV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uIGV4dGVuZHMgV0kuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZXh0ZW5zaW9uSUQsIGRp
c3BsYXlOYW1lKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICBjb25zb2xlLmFz
c2VydCh0eXBlb2YgZXh0ZW5zaW9uSUQgPT09ICJzdHJpbmciLCBleHRlbnNpb25JRCk7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBkaXNwbGF5TmFtZSA9PT0gInN0cmluZyIsIGRpc3Bs
YXlOYW1lKTsKKworICAgICAgICB0aGlzLl9leHRlbnNpb25JRCA9IGV4dGVuc2lvbklEOworICAg
ICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOworICAgIH0KKworICAgIC8vIFB1
YmxpYworCisgICAgZ2V0IGV4dGVuc2lvbklEKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uSUQ7
IH0KKyAgICBnZXQgZGlzcGxheU5hbWUoKSB7IHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTsgfQor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKaW5kZXggMWQxZjI4OGJi
ODM0ZDQ4MmY2NGUzOWVmMGZiZDUzODZkODc0ZGVmMC4uZWU3N2E2YjM4ODA5MjJkODYxZjZiNjVj
YTY0MTk1NzQ0Nzc3NTJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEku
anMKQEAgLTE5Niw1ICsxOTYsMTUgQEAgSW5zcGVjdG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChJbnNwZWN0b3JGcm9udGVuZEFQSS5f
cGVuZGluZ0NvbW1hbmRzW2ldKTsKIAogICAgICAgICBkZWxldGUgSW5zcGVjdG9yRnJvbnRlbmRB
UEkuX3BlbmRpbmdDb21tYW5kczsKKyAgICB9LAorCisgICAgcmVnaXN0ZXJFeHRlbnNpb24oZXh0
ZW5zaW9uSUQsIGRpc3BsYXlOYW1lKQorICAgIHsKKyAgICAgICAgV0kuc2hhcmVkQXBwLmV4dGVu
c2lvbkNvbnRyb2xsZXIucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1l
KTsKKyAgICB9LAorCisgICAgdW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCkKKyAgICB7
CisgICAgICAgIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVyLnVucmVnaXN0ZXJFeHRl
bnNpb24oZXh0ZW5zaW9uSUQpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNTFmNDMyMWNhZTMyNjMxZDc4MDZhMzhiMWU2
MmZiYTMxMjU1ZjhiYS4uZjBhYjljMmMzZGI0ZTFjYWQxODEyZGUwMGNhN2Q4ZTllZDIzYzM4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAt
OTUsNiArOTUsNyBAQCAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdl
cy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94
eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL01lZGlhL0F1ZGlvU2Vzc2lv
blJvdXRpbmdBcmJpdHJhdG9yUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJv
Y2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9MZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMTQxLDYgKzE0Miw3IEBAICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvR1BVL3dlYnJ0Yy9TYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yLm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVycnVw
dERpc3BhdGNoZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAyNjJmYmQxMzNl
ODU4YmMzOTExOWUyNGNlNjE2NTlmMDVlZTFlYjZlLi44ZGMxZDJmNTQ5NDM2M2Q3NDE3N2ExZjI3
YzM5MDYxNDY5NGIwMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKQEAgLTM0NSw2ICszNDUsOSBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlc1Jl
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2Vy
dmVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCU2VydmVyTWVzc2FnZXNSZXBsaWVzLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JJ
bnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hl
ck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlc1JlcGxpZXMuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDNlZTY5ODkwNTZkYmY3ZjI5NjU0YmVjNTIxN2M1Mzgy
YWE2ZDcxZmEuLmEyNTU4MjMwOGZmMzg3NjY0OGViMzFkNmVmZjZiN2Y5M2U2YjhiMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE4Myw2ICsxODMsNyBAQCBNRVNTQUdFX1JFQ0VJ
VkVSUyA9IFwKIAlXZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ciBcCiAJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hl
ciBcCiAJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkgXAorCVdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBcCiAJV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSSBcCiAJV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlciBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggNDU3YzI2
MjJhZjFhYmRhM2RmZTYzNzcwZTI3MTRkMTJmN2M3YzQ4Zi4uMDE1YjAwYTJhYzRkOThjNzA4MTVm
N2FjMDM1ZTkwYWU3NTJkYzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApA
QCAtMTM2LDYgKzEzNiw5IEBAIHB1YmxpYzoKICAgICAgICAgR3JhbW1hckRldGFpbCwKICAgICAg
ICAgSWNvbkRhdGFiYXNlLAogICAgICAgICBJbnNwZWN0b3IsCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorICAgICAgICBJbnNwZWN0b3JFeHRlbnNpb24sCisjZW5kaWYKICAgICAg
ICAgS2V5VmFsdWVTdG9yYWdlTWFuYWdlciwKICAgICAgICAgTWVkaWFDYWNoZU1hbmFnZXIsCiAg
ICAgICAgIE1lc3NhZ2VMaXN0ZW5lciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVj
dC5tbQppbmRleCAxNzMwYmQ0OTNmZDBiNDZkZWVjYzI0N2Q3YzE4MmNkNjgyOGRhNjMxLi41Y2Ux
MmNkNzIyMjI2NDA0MTczYTFlZTdkNmJmMTUwYjFmNjM3OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC05OCw2ICs5OCwxMCBAQAogI2ltcG9ydCAiX1dLQXBw
bGljYXRpb25NYW5pZmVzdEludGVybmFsLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKKyNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgi
CisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHNpemVfdCBtaW5pbXVtT2JqZWN0QWxpZ25tZW50ID0g
YWxpZ25vZihzdGQ6OmFsaWduZWRfc3RvcmFnZTxzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpPjo6dHlwZSk7CiBzdGF0aWNfYXNzZXJ0KG1pbmltdW1PYmplY3RBbGlnbm1lbnQgPj0g
YWxpZ25vZih2b2lkKiksICJPYmplY3RzIHNob3VsZCBhbHdheXMgYmUgYXQgbGVhc3QgcG9pbnRl
ci1hbGlnbmVkLiIpOwogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0cmFTcGFjZUZvckFs
aWdubWVudCA9IG1pbmltdW1PYmplY3RBbGlnbm1lbnQgLSBhbGlnbm9mKHZvaWQqKTsKQEAgLTI2
NCw3ICsyNjgsMTMgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUg
dHlwZSkKICAgICBjYXNlIFR5cGU6Okluc3BlY3RvcjoKICAgICAgICAgd3JhcHBlciA9IFtfV0tJ
bnNwZWN0b3IgYWxsb2NdOwogICAgICAgICBicmVhazsKLSAgICAgICAgCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgY2FzZSBUeXBlOjpJbnNwZWN0b3JFeHRlbnNpb246
CisgICAgICAgIHdyYXBwZXIgPSBbX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFsbG9jXTsKKyAgICAg
ICAgYnJlYWs7CisjZW5kaWYKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdhdGlvbjoKICAgICAgICAg
d3JhcHBlciA9IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CmluZGV4IDYzMTQ1YWZiNWY5MTQ3MGNlY2ViZDJjYjYwOWM3YjIxZmVjNzY1ZGYuLmJhYTIyODNi
OTkyYTQ1MmM0MzVjMmVhNmVjZGQzMmJkNTFiMGRiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzQyLDYg
KzM0Miw3IEBAIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAogVUlQcm9jZXNzL0FQSS9B
UElGcmFtZVRyZWVOb2RlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3Bw
CiBVSVByb2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuY3BwCitVSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckV4dGVuc2lvbi5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1
cmUuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uY3BwCiBVSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25EYXRhLmNwcApAQCAtNDM0LDYgKzQzNSw3IEBAIFVJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9JbnNwZWN0b3JUYXJnZXRQcm94
eS5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCiBV
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAorVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcAogVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJQYWdlRGVidWdnYWJsZS5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCkBAIC01NDgsNiArNTUwLDcgQEAgV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5jcHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJLmNwcAorV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvclRh
cmdldC5jcHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250
cm9sbGVyLmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvclRhcmdldEZy
b250ZW5kQ2hhbm5lbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBmNjlhMmRkMzliMGUx
ZTIwYzFiYmZjMTNhNWQ0NDE1OTM3OTIwYmZkLi4yYzgyYzViZjk2MTcwMzA5MjUyMTZjMmFkMmFl
NmE3YTNkZjBmNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTgsNiArMjU4LDcgQEAg
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tCiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JUZXN0aW5nLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckRlYnVnZ2FibGVJ
bmZvLm1tCitVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JXaW5kb3cubW0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLTGlu
a0ljb25QYXJhbWV0ZXJzLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MDY5NmU2MTg3NDJiYmZk
MzViZDEyZGE2MzBiYzVlZjM0ODY4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcApAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUluc3BlY3Rv
ckV4dGVuc2lvbi5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5j
bHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK1JlZjxJbnNwZWN0
b3JFeHRlbnNpb24+IEluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5JiBleHRlbnNpb25Db250cm9sbGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElu
c3BlY3RvckV4dGVuc2lvbihpZGVudGlmaWVyLCBleHRlbnNpb25Db250cm9sbGVyKSk7Cit9CisK
K0luc3BlY3RvckV4dGVuc2lvbjo6SW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5JiBleHRlbnNpb25Db250cm9sbGVyKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CisgICAgLCBtX2V4dGVuc2lvbkNvbnRyb2xsZXIobWFrZVdlYWtQdHIoZXh0ZW5zaW9uQ29udHJv
bGxlcikpCit7Cit9CisKK0luc3BlY3RvckV4dGVuc2lvbjo6fkluc3BlY3RvckV4dGVuc2lvbigp
ID0gZGVmYXVsdDsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjUxYTQyYzJlMjcwNDY2NzZlODkw
OTk3ZjkwOGMzZDE1MDM4OTg5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lv
biBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3JF
eHRlbnNpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEluc3BlY3RvckV4dGVuc2lvbj4g
Y3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Jik7CisgICAgdmlydHVhbCB+SW5zcGVjdG9yRXh0
ZW5zaW9uKCk7CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIEluc3BlY3RvckV4dGVuc2lv
bihjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYpOworCisgICAgV1RGOjpTdHJpbmcgbV9pZGVudGlmaWVy
OworICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eT4gbV9leHRlbnNpb25Db250cm9sbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLmgKaW5kZXggMTg5OWU4MThiMzYz
ZTg1ZDQ2MGIzMDk3M2I0YWEwZDQ4ODk5NTk5ZS4uODZiMWNmODk2Mjc4ZjE5NzJiOWE3OTk3YzQ5
Mjc0ZDFlZWRjY2Y1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3IuaApAQCAtMjUsMTcgKzI1LDE1IEBACiAKICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8V2ViS2l0L19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaD4KKworTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIAogQGNsYXNzIFdLV2ViVmlldzsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKK0Bj
bGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CiBAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRGVsZWdh
dGU7CiAKLU5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCi0KLUBwcm90b2NvbCBfV0tJbnNwZWN0b3JF
eHRlbnNpb25Ib3N0Ci0tICh2b2lkKWNsb3NlOwotQGVuZAotCiBXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkKIEBpbnRlcmZhY2UgX1dLSW5zcGVjdG9yIDogTlNP
YmplY3QgPF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3Q+CiAKQEAgLTUyLDYgKzUwLDcgQEAgV0tf
Q0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpCiAKIC0gKHZvaWQpY29u
bmVjdDsKIC0gKHZvaWQpc2hvdzsKKy0gKHZvaWQpY2xvc2U7CiAtICh2b2lkKWhpZGU7CiAtICh2
b2lkKXNob3dDb25zb2xlOwogLSAodm9pZClzaG93UmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KaW5kZXggNjczNDExZjMw
ZWYxZDEwOGUxZDQ0NDc0MTk0YmNjYThmOTNkMWY2Yi4uMDliNTBkOTI2ZGEzMTNmNWRmMzc2ODVm
N2EzYWNjYTU3NGFmNmQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJfV0tJbnNw
ZWN0b3JJbnRlcm5hbC5oIgogCiAjaW1wb3J0ICJJbnNwZWN0b3JEZWxlZ2F0ZS5oIgorI2ltcG9y
dCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBAIC0zNyw2ICszOCwx
MyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW1wb3J0ICJBUElJ
bnNwZWN0b3JFeHRlbnNpb24uaCIKKyNpbXBvcnQgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5o
IgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjZW5kaWYKKwogQGltcGxlbWVudGF0aW9uIF9X
S0luc3BlY3RvcgogCiAvLyBNQVJLOiBfV0tJbnNwZWN0b3IgbWV0aG9kcwpAQCAtMTk0LDQgKzIw
MiwzOCBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogICAgIHJldHVybiAqX2luc3BlY3Rv
cjsKIH0KIAorLy8gTUFSSzogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBtZXRob2RzCisKKy0g
KHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlz
cGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgX2luc3BlY3Rvci0+ZXh0
ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5
TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJv
dGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBp
ZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxd
LCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FwdHVy
ZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHBy
b3RlY3RlZEV4dGVuc2lvbklELmdldCgpLCBwcm90ZWN0ZWRTZWxmLT5faW5zcGVjdG9yLT5leHRl
bnNpb25Db250cm9sbGVyKCkpKSByZXRhaW5dIGF1dG9yZWxlYXNlXSk7CisgICAgfSk7CisjZWxz
ZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9y
RG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKKyNlbmRpZgor
fQorCistICh2b2lkKXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4dGVuc2lvbiAq
KWV4dGVuc2lvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRp
b25IYW5kbGVyCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIF9pbnNw
ZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lv
bi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVk
QmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBzdWNjZXNzKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICBjYXB0dXJlZEJs
b2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVu
a25vd24gdXNlckluZm86bmlsXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRp
b25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvclVua25vd24gdXNlckluZm86bmlsXSk7CisjZW5kaWYKK30KKwogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVu
c2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVhMDI1M2NlMGUwZGEyOGJkNzA3YTYyYTYxNzUzMDhjZjc2ZDYw
MjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRh
dGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSkpCitAaW50ZXJmYWNlIF9XS0luc3BlY3RvckV4dGVuc2lvbiA6IE5T
T2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKysgKGluc3RhbmNl
dHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21p
YykgTlNTdHJpbmcgKmV4dGVuc2lvbklEOworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NTczYmY4Y2MwYTNkMTRjMjUzMGVhMWU2
NGQ3NjkyNTcxMDVkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCkBAIC0wLDAgKzEsNTEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVu
c2lvbkludGVybmFsLmgiCisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbXBsZW1lbnRh
dGlvbiBfV0tJbnNwZWN0b3JFeHRlbnNpb24KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9leHRl
bnNpb247Cit9CisKKy8vIE1BUks6IFByb3BlcnRpZXMuCisKKy0gKE5TU3RyaW5nICopZXh0ZW5z
aW9uSUQKK3sKKyAgICByZXR1cm4gX2V4dGVuc2lvbi0+aWRlbnRpZmllcigpOworfQorCisjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCitAZW5kCisKK05TX0FTU1VNRV9O
T05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg3ZDk2Mzk4
MjcxY2EzZmIxZTk5MTM3NDI0OGRiZGQ3ZDQzMzUxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmgK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgorCitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOworCitAcHJvdG9jb2wg
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdAorQG9wdGlvbmFsCisKKy8qKgorICogQGFic3RyYWN0
IFJlZ2lzdGVycyBhIFdlYiBFeHRlbnNpb24gd2l0aCB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVj
dG9yLgorICogQHBhcmFtIGV4dGVuc2lvbklEIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBl
eHRlbnNpb24uCisgKiBAcGFyYW0gZGlzcGxheU5hbWUgQSBsb2NhbGl6ZWQgZGlzcGxheSBuYW1l
IGZvciB0aGUgZXh0ZW5zaW9uLgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21w
bGV0aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gcmVnaXN0cmF0aW9uIHN1Y2NlZWRzIG9y
IGZhaWxzLgorICoKKyAqIFdlYiBFeHRlbnNpb25zIGluIFdlYiBJbnNwZWN0b3IgYXJlIGFjdGl2
ZSBhcyBzb29uIGFzIHRoZXkgYXJlIHJlZ2lzdGVyZWQuCisgKi8KKy0gKHZvaWQpcmVnaXN0ZXJF
eHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3Ry
aW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9O
dWxsYWJsZSwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworLyoqCisgKiBAYWJzdHJhY3QgVW5yZWdpc3RlcnMgYSBXZWIgRXh0ZW5zaW9uIHdp
dGggdGhlIGFzc29jaWF0ZWQgV2ViIEluc3BlY3Rvci4KKyAqIEBwYXJhbSBleHRlbnNpb25JRCBB
IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZXh0ZW5zaW9uLgorICogQHBhcmFtIGNvbXBsZXRp
b25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdW5yZWdp
c3RlcmluZyBzdWNjZWVkcyBvciBmYWlscy4KKyAqCisgKiBVbnJlZ2lzdGVyaW5nIGFuIGV4dGVu
c2lvbiB3aWxsIGF1dG9tYXRpY2FsbHkgY2xvc2UgYW55IGFzc29jaWF0ZWQgc2lkZWJhcnMvdGFi
cy4KKyAqLworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNp
b24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxs
YWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qKgorICogQGFic3RyYWN0IENsb3NlcyB0aGUg
YXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yIGluc3RhbmNlLiBUaGlzIHdpbGwgY2F1c2UgYWxsCisg
KiByZWdpc3RlcmVkIF9XS0luc3BlY3RvckV4dGVuc2lvbnMgdG8gYmUgdW5yZWdpc3RlcmVkIGFu
ZCBpbnZhbGlkYXRlZC4KKyAqLworLSAodm9pZCljbG9zZTsKK0BlbmQKKworTlNfQVNTVU1FX05P
Tk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4
MWZhZDMzNWJiZDg2NWEwOTQxYzBjZDA0YzU0YTQ5YTI1MjNhMTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
SW50ZXJuYWwuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisK
KyNpbXBvcnQgIkFQSUluc3BlY3RvckV4dGVuc2lvbi5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tJ
bnNwZWN0b3JFeHRlbnNpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKCkg
PFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Okluc3Bl
Y3RvckV4dGVuc2lvbj4gX2V4dGVuc2lvbjsKK30KKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVM
TF9FTkQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgKaW5kZXggNThiMTAyNzAzMjRlZTkx
NzM5MzBmOGM3YWRlOGJmY2Q3YzllNDRlZS4uZmZiZjg5YzUxZWUxODUyZTIwNWNkMmM3MGQ3OTcy
ZjEzYjQyN2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
LmgKQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9u
Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oPgogCiAjaWYg
IVRBUkdFVF9PU19JUEhPTkUKIApAQCAtNDMsNyArNDQsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBXS1JlbW90ZVdlYkluc3BlY3RvckRlYnVnZ2FibGVUeXBlKSB7CiB9IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTIuMyksIGlvcygxMC4zKSk7CiAKIFdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcygxMC4xMi4zKSwgaW9zKDEwLjMpKQotQGludGVyZmFjZSBfV0tSZW1vdGVXZWJJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlciA6IE5TT2JqZWN0CitAaW50ZXJmYWNlIF9XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyIDogTlNPYmplY3QgPF9XS0luc3BlY3RvckV4dGVuc2lvbkhv
c3Q+CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGlkIDxfV0tSZW1vdGVXZWJJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCmluZGV4IDY2YmYyNGRmODI2ZGFhOGU3Mjg0
MjQ4ZmQxYjcyOGNiNWViZmYzNDMuLjczYzViZGNjYzU4MmU0ZmY1MmNmMjUxOWE0YTE4ZDkyZTZm
ZWEwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0K
QEAgLTM0LDYgKzM0LDE2IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIgogCisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisj
aW1wb3J0ICJXS0Vycm9yLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIK
KyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2VuZGlmCisKK05TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCisKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKCkK
IC0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5TU3RyaW5nICopbWVzc2FnZTsKIC0gKHZv
aWQpY2xvc2VGcm9tRnJvbnRlbmQ7CkBAIC0xNjgsNiArMTc4LDQyIEBAIC0gKHZvaWQpX3NldERp
YWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU+
KWRlbGVnYXRlCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+c2V0RGlhZ25vc3RpY0xvZ2dp
bmdBdmFpbGFibGUoISFkZWxlZ2F0ZSk7CiB9CiAKKy8vIE1BUks6IF9XS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QgbWV0aG9kcworCistICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0
cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiBfTnVsbGFibGUsIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5z
aW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFt
ZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVj
dGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgaWYgKCFzdWNjZXNz
KSB7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpX
S0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmls
LCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRl
bnNpb25JRC5nZXQoKSwgcHJvdGVjdGVkU2VsZi0+bV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0
ZW5zaW9uQ29udHJvbGxlcigpKSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOworICAgIH0pOworI2Vs
c2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJv
ckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CisjZW5kaWYK
K30KKworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24g
KilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJs
ZSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnVucmVn
aXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVuc2lvbklELCBbcHJvdGVjdGVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAg
ICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWlu
IGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCk7CisgICAgfSk7CisjZWxz
ZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9y
RG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSk7CisjZW5kaWYKK30KKwog
QGVuZAogCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5
bGVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHls
ZVNoZWV0LmgKaW5kZXggMDZmOGYxZjc2MmU4OTY4NmZjNWRjM2ZjODkwZjEzZTBiMzYzZDMzMy4u
ZTRjZjVhMmRjMTAyZjU5NmQzYWVmZThjNjQ3YjZmNWFhOWI3OWIwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKQEAg
LTI5LDYgKzI5LDcgQEAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBfV0tVc2Vy
Q29udGVudFdvcmxkOworQGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNsYXNzIFdLV2ViVmlldzsK
IAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLVXNlclN0eWxlTGV2ZWwpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVl
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVl
dC5tbQppbmRleCAwNjg0NDEyYjEzNTFmMzBhNWQ0ODRmOTA5ZDdhNGI5N2E3MWNhNDI2Li43OTE1
ZWEzYjJmNjVkYTQ4Y2Y0ZWE5ODIwMjVhOTNlNGUxOGE3ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAKICNp
bXBvcnQgIkFQSUFycmF5LmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAj
aW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQg
IldLV2ViVmlld0ludGVybmFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBlYzMx
MGQ4YTMzODkwNWQyNmE5NDNkZGE2MTk3ZjEwZTI5MmM4OTlmLi40YzZmNTRmMGYzY2JiMGIwMzFm
Y2U3NmRiMTc5MzUxMWJhNmE2Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTM2
LDYgKzM2LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkBAIC0xNzUsNiArMTc5LDEwIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OmNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCks
ICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNz
VG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JC
YXNlVVJMKCkpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0
ZW5zaW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk+KCptX2luc3BlY3RvclBhZ2UpOworI2VuZGlmCiB9CiAKIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5LmgKaW5kZXggZGViYTBmZWU2MjU2NDU2MjVkNzYzOTZiMmIwNjVhMjEyYmY5Mzgw
OC4uOTRmNTM1NTRmYTEwOWFkYmQ3MjE5MDJjNTQ4YzIzYzA1ZWFiZDhkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5LmgKQEAgLTU0LDYgKzU0LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlZpZXc7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk7Cisj
ZW5kaWYKIAogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgewogcHVibGljOgpA
QCAtODUsNiArODgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKyAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5z
aW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0K
KyNlbmRpZgorICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBOU1dpbmRvdyAqd2luZG93KCkg
Y29uc3QgeyByZXR1cm4gbV93aW5kb3cuZ2V0KCk7IH0KICAgICBXS1dlYlZpZXcgKndlYlZpZXco
KSBjb25zdDsKQEAgLTE0Niw2ICsxNTMsMTAgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgV2ViUGFnZVByb3h5
KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRyIH07CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKKyAgICAKICAgICBS
ZWY8QVBJOjpEZWJ1Z2dhYmxlSW5mbz4gbV9kZWJ1Z2dhYmxlSW5mbzsKICAgICBTdHJpbmcgbV9i
YWNrZW5kQ29tbWFuZHNVUkw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IGYwZjdiMmRmNWU0MTkyYWM0
NTQ4YjhmN2JjYjk5N2QxZjEzMGQ0NjAuLjA4MGIxNThmMDFmN2JkOTZiMTAwMTQ0MTRkNTVjNGM3
OGNhNTZhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldl
Ykluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYklu
c3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91
cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCkBAIC00MjEsNiAr
NDIyLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSgpCiAK
ICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVk
UGFnZS0+aWRlbnRpZmllcigpLCAqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqbV9pbnNwZWN0b3JQYWdlLCBXZWJJbnNwZWN0
b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PigqbV9pbnNwZWN0b3JQYWdlKTsKKyNlbmRp
ZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVu
ZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpCkBAIC01NDYsNiArNTUxLDEwIEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKICAgICBp
ZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0Zm9ybURldGFjaCgpOwogCisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG51bGxw
dHI7CisjZW5kaWYKKyAgICAKICAgICAvLyBOdWxsIG91dCBtX2luc3BlY3RvclBhZ2UgYWZ0ZXIg
cGxhdGZvcm1EZXRhY2goKSwgc28gdGhlIHZpZXdzIGNhbiBiZSBjbGVhbmVkIHVwIGNvcnJlY3Rs
eS4KICAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwogCkBAIC01NzEsNiArNTgwLDEwIEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kTG9hZGVkKCkKIAogICAgIGlmIChhdXRv
KiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPmlu
c3BlY3RvckZyb250ZW5kTG9hZGVkKCptX2luc3BlY3RlZFBhZ2UpOworICAgIAorI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXItPmluc3Bl
Y3RvckZyb250ZW5kTG9hZGVkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6YnJpbmdUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggMTRkNDc3ZThkNzlhMWMzOTc5YWM1YTg5
NzYwYmMzZGYwZjVlOWM4NC4uZjU1NDFiZjcwMjgxN2ViYzhiZTM2NTI1ZGFjMzA5Zjg2NTQ1OGRm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY5LDYgKzcwLDkgQEAg
Y2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5Q2xpZW50OwogY2xh
c3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHk7CisjZW5kaWYKIAogZW51bSBjbGFzcyBBdHRhY2htZW50U2lkZSB7CiAgICAgQm90dG9t
LApAQCAtODAsNiArODQsNyBAQCBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eQogICAgIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yPgogICAgICwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JQcm94eT4K
ICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6V2luZG93TWVzc2FnZUxp
c3RlbmVyCiAjZW5kaWYKQEAgLTEwMiw2ICsxMDcsMTAgQEAgcHVibGljOgogICAgIFdlYlBhZ2VQ
cm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsgfQog
ICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVj
dG9yUGFnZTsgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVyKCkg
Y29uc3QgeyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29udHJvbGxlcjsgfQorI2VuZGlmCisKICAgICBi
b29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KICAg
ICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAgICAgYm9v
bCBpc0Zyb250KCk7CkBAIC0yODYsNiArMjk1LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVBy
b3h5KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRyIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SW5zcGVjdG9yQ2xpZW50PiBtX2luc3BlY3RvckNsaWVudDsKIAorI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgorICAg
IAogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Zpc2libGUg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0F0dGFjaGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0
YmQ0MGQxZjQ3OWM5ODQ1YjU1NDM4OTY5MzFjOGVjMjc4ZWUxMTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNs
dWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6
OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5z
cGVjdG9yUGFnZSkKKyAgICA6IG1faW5zcGVjdG9yUGFnZShtYWtlV2Vha1B0cihpbnNwZWN0b3JQ
YWdlKSkKK3sKK30KKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6On5X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSgpCit7CisgICAgaWYgKCFtX2lu
c3BlY3RvclBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW5zcGVjdG9yUGFnZSA9IG51
bGxwdHI7CisKKyAgICBhdXRvIGNhbGxiYWNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV9mcm9udGVuZExv
YWRlZENhbGxiYWNrUXVldWUsIHsgfSk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxi
YWNrcykKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6d2hlbkZyb250ZW5kSGFzTG9hZGVkKEZ1bmN0aW9uPHZvaWQo
KT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9mcm9udGVuZExvYWRlZCAmJiBtX2luc3BlY3Rv
clBhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNr
KSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6Omlu
c3BlY3RvckZyb250ZW5kTG9hZGVkKCkKK3sKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsK
KworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisgICAgYXV0byBjYWxsYmFja3MgPSBz
dGQ6OmV4Y2hhbmdlKG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlLCB7IH0pOworICAgIGZv
ciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgICAgIGNhbGxiYWNrKCk7Cit9CisK
Ky8vIEFQSQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojpy
ZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6
OlJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lIH0sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbklELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMg
fHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6VW5yZWdpc3RlckV4
dGVuc2lvbiB7IGV4dGVuc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiYjVkY2M3ODI4ZmI0OGJkNTBiMTk3NzQyOTQwMTNk
M2EzZDZkNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaApAQCAtMCwwICsx
LDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5IGZpbmFsCisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KTsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eShXZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpOworICAgIHZpcnR1YWwgfldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KCk7CisKKyAgICAvLyBBUEkuCisgICAgdm9p
ZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
ICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgLy8gTm90aWZpY2F0
aW9ucy4KKyAgICB2b2lkIGluc3BlY3RvckZyb250ZW5kTG9hZGVkKCk7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCB3aGVuRnJvbnRlbmRIYXNMb2FkZWQoRnVuY3Rpb248dm9pZCgpPiYmKTsKKworICAg
IFdlYWtQdHI8V2ViUGFnZVByb3h5PiBtX2luc3BlY3RvclBhZ2U7CisgICAgYm9vbCBtX2Zyb250
ZW5kTG9hZGVkIHsgZmFsc2UgfTsKKworICAgIC8vIFVzZWQgdG8gcXVldWUgYWN0aW9ucyBzdWNo
IGFzIHJlZ2lzdGVyaW5nIGV4dGVuc2lvbnMgdGhhdCBoYXBwZW4gZWFybHkgb24uCisgICAgLy8g
VGhlcmUncyBubyBwb2ludCBzZW5kaW5nIHRoZXNlIGJlZm9yZSB0aGUgZnJvbnRlbmQgaXMgZnVs
bHkgbG9hZGVkLgorICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX2Zyb250ZW5kTG9hZGVk
Q2FsbGJhY2tRdWV1ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDEwYWVkNGY0NDMxY2YxOTg5ZDA2OTdhOGNl
ZWFjYTFmMjg0MGI0My4uMWY4MzI5ZmE5YWExYjU3NTI3ZTc2NTU3NTM0NWZjNTgzYjlkMTVmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNDI2LDggKzE0MjYsMTYgQEAKIAkJOTk1NUE2RjYxQzc5ODZFMzAwRUI2QTkzIC8qIEF1dG9t
YXRpb25Qcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk1NUE2RjIxQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90
b2NvbE9iamVjdHMuY3BwICovOyB9OwogCQk5OTU1QTZGNzFDNzk4NkU1MDBFQjZBOTMgLyogQXV0
b21hdGlvblByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk1NUE2RjMxQzc5ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90
b2NvbE9iamVjdHMuaCAqLzsgfTsKIAkJOTk3ODhBQ0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1
dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3ODhBQzkxRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9t
YXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTk5Nzk2NTk1MjUyRkRGMjgwMEIzMUFFMyAvKiBBUElJbnNw
ZWN0b3JFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5Nzk2NTk0MjUyRkRGMTYwMEIzMUFFMyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24u
aCAqLzsgfTsKKwkJOTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OTc5NjU5QTI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLzsgfTsKKwkJOTk3OTY1OUYyNTMxMEE0
OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTc5NjU5QjI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTk3OTY1QTMyNTMxMjhDNzAwQjMxQUUz
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTk3OUNBNTgyMzdGNDlGMTAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
NzlDQTU3MjM3RjQ5RjAwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk5OTZBOUYyNTAwNEJD
QzAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTk5NkE5RDI1MDA0QkNCMDA0Rjc1
NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OUIxNjc1NzI1MkJCN0UxMDA3MzE0MEUg
LyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc1NDI1MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTlCMTY3NTgyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbklu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OUIxNjc1NTI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwu
aCAqLzsgfTsKKwkJOTlCMTY3NUIyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLzsgfTsKKwkJOTlCMTY3NjQyNTJCQkU2MjAwNzMx
NDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NjEyNTJCQkU2MTAwNzMxNDBF
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oICovOyB9OwogCQk5OUMzQUUy
RDFEQURBNkFEMDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzNBRTJDMURBREE2QTcw
MEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oICovOyB9OwogCQk5OUM4MUQ1
QTFDMjBFN0UyMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8q
IEF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJOTlDODFENUQxQzIxRjM4QjAwNUM0QzgyIC8q
IEFQSUF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xp
ZW50LmggKi87IH07CkBAIC00NTQ5LDkgKzQ1NTcsMjIgQEAKIAkJOTk1NUE2RjMxQzc5ODY2NDAw
RUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5Nzg4QUM5MUY0MjFEQ0EwMEMwODAwMCAvKiBf
V0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5Nzg4QUNBMUY0MjFEQ0EwMEMwODAwMCAvKiBfV0tBdXRv
bWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5Nzk2NTkzMjUyRkRGMTYwMEIzMUFFMyAvKiBBUElJ
bnNwZWN0b3JFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTk3OTY1OTQyNTJGREYxNjAwQjMxQUUzIC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbnNwZWN0b3JFeHRlbnNpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CisJCTk5Nzk2NTlCMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJOTk3OTY1QTIyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbkhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JQcml2YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OTk2QTlEMjUwMDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNw
ZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OTk5NkE5RTI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yVGVzdGluZy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3BlY3RvclRl
c3RpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzU0MjUyQkI3RTAw
MDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5QjE2NzU1MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0
b3JFeHRlbnNpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIx
Njc1NjI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUg
LyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NUQyNTJCQkUwQTAwNzMx
NDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NjAy
NTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc2
MTI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc2MjI1MkJC
RTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDM0FFMjMx
REFEOEUzNDAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNBRTI2MURBRDk0ODUwMEFGNUMxNiAv
KiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTlDM0FFMkMxREFEQTZBNzAwQUY1QzE2IC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uTWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1
dG9tYXRpb25TZXNzaW9uTWFjcm9zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
MzM5LDYgKzczNjAsMTAgQEAKIAkJCQk5OTFGNDkyRTIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5z
cGVjdG9yRGVidWdnYWJsZUluZm8ubW0gKi8sCiAJCQkJOTkwMzZBRTEyM0E5NDlDRTAwMDBCMDZB
IC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCAqLywKIAkJCQk5MTk3OTQw
QjIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCAqLywKKwkJCQk5OUIx
Njc1NDI1MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi8sCisJCQkJ
OTlCMTY3NTYyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5tbSAqLywK
KwkJCQk5OTc5NjVBMjI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9z
dC5oICovLAorCQkJCTk5QjE2NzU1MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRl
bnNpb25JbnRlcm5hbC5oICovLAogCQkJCTVDQUZERTQ0MjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJ
bnNwZWN0b3JJbnRlcm5hbC5oICovLAogCQkJCTk5NzlDQTU3MjM3RjQ5RjAwMDM5RUMwNSAvKiBf
V0tJbnNwZWN0b3JQcml2YXRlLmggKi8sCiAJCQkJOTk5OTZBOUQyNTAwNEJDQjAwNEY3NTU5IC8q
IF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggKi8sCkBAIC04NjQ5LDYgKzg2NzQsOCBA
QAogCQkJCTFDOEUyODMzMTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5jcHAg
Ki8sCiAJCQkJMUM4RTI4MzIxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5Lmgg
Ki8sCiAJCQkJMUM3N0MxOTUxMjg4QTg3MjAwNkE3NDJGIC8qIFdlYkluc3BlY3RvclByb3h5Lm1l
c3NhZ2VzLmluICovLAorCQkJCTk5QjE2NzVEMjUyQkJFMEEwMDczMTQwRSAvKiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgKi8sCisJCQkJOTlCMTY3NUEyNTJCQkFE
RDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggKi8s
CiAJCQkJQTU1QkE4MjcxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5j
cHAgKi8sCiAJCQkJQTU1QkE4MjgxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxp
dGllcy5oICovLAogCQkJCUE1RUM2QUQyMjE1MUJENjkwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdn
YWJsZS5jcHAgKi8sCkBAIC04NzEzLDYgKzg3NDAsOSBAQAogCQkJCTFDODkxRDYyMTlCMTI0RkYw
MEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi8sCiAJCQkJMUM4OTFENjMxOUIxMjRGRjAw
QkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8sCiAJCQkJMUM4OTFENjQxOUIxMjRGRjAwQkE3
OUREIC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluICovLAorCQkJCTk5QjE2NzYwMjUyQkJF
NjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwICovLAor
CQkJCTk5QjE2NzYxMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIuaCAqLywKKwkJCQk5OUIxNjc2MjI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluICovLAogCQkJCUE1NDNFMzBBMjE1
QzhBODQwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcCAqLywKIAkJCQlBNTQz
RTMwODIxNUM4QTgzMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldC5oICovLAogCQkJ
CUE1NDNFMzA5MjE1QzhBODMwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJv
bGxlci5jcHAgKi8sCkBAIC05MzI5LDYgKzkzNTksOCBAQAogCQkJCTUxNDNCMjYxMURERDBEQTAw
MDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5oICovLAogCQkJCTdBOEE5RDU3MUVGMTE5
QUEwMDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAogCQkJCTkxOTc5NDA5
MjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCAqLywKKwkJCQk5OTc5NjU5
MzI1MkZERjE2MDBCMzFBRTMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmNwcCAqLywKKwkJCQk5
OTc5NjU5NDI1MkZERjE2MDBCMzFBRTMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi8sCiAJ
CQkJMzFCMzYyOTAyMTQxRUFCQzAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmNw
cCAqLywKIAkJCQkzMUIzNjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0Zl
YXR1cmUuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29u
dGV4dEhpc3RvcnlDbGllbnQuaCAqLywKQEAgLTEwMzU2LDYgKzEwMzg4LDggQEAKIAkJCQkxQzhF
MkEzMjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCAqLywKIAkJCQkx
Q0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQ
cm94eU1lc3NhZ2VzLmggKi8sCisJCQkJOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJ
OTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYklu
c3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2
QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oICovLAogCQkJCTUxRjA2MEREMTY1NDMx
NzUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAt
MTA3NjcsNiArMTA4MDEsOSBAQAogCQkJCTk5MUY0OTJGMjNBODEyQzYwMDU0NjQyQiAvKiBfV0tJ
bnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwMzZBRTIyM0E5
NDlDRjAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkxOTc5NDBDMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlCMTY3NTcyNTJCQjdFMTAwNzMxNDBFIC8q
IF9XS0luc3BlY3RvckV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk3OTY1QTMyNTMx
MjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCBpbiBIZWFkZXJzICov
LAorCQkJCTk5QjE2NzU4MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25J
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNBRkRFNDcyMTMwODQ2QTAwQjFGN0UxIC8q
IF9XS0luc3BlY3RvckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTc5Q0E1ODIzN0Y0
OUYxMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTk5OTZBOUYyNTAwNEJDQzAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5n
LmggaW4gSGVhZGVycyAqLywKQEAgLTEwODc3LDYgKzEwOTE0LDcgQEAKIAkJCQk3QThBOUQ1QzFF
RjE0NTk4MDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzY5MDc5QTE4RjMxQ0IyMDAxREZGMDQgLyogQVBJSW5q
ZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDBBMjNE
QkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk5Nzk2NTk1MjUyRkRGMjgwMEIzMUFFMyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxQjM2MjhGMjE0MUVBNUQwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERl
YnVnRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNEQyMDcxQTQ2Nzc2MTAwQzdGMTUy
IC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTI0NjRGMzE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTExNTAyLDYgKzExNTQwLDkgQEAKIAkJCQkxQzhFMjgzNDEyNzVENzM4MDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQThCOTQ2MTI3Qzg4
MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTk5QjE2NzY0MjUyQkJFNjIwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5Nzk2NTlFMjUzMTBBNDkw
MEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTlCMTY3NUIyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0JCRTRB
MTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU1QkE4MkIxQkEzOEU2MTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBOTQ0QTAxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklP
U0V2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzMxNiw2ICsxMzM1Nyw3IEBACiAJ
CQkJRkVEQkRDRDYxRTY4RDIwMDAwQTU5RjhGIC8qIFdlYkluc3BlY3RvckludGVycnVwdERpc3Bh
dGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTJBMzUxMjc3
ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQ0E4Qjk0NTEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTk3OTY1OUYyNTMxMEE0OTAw
QjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3
OEEyMTJCNkFCMTAwRjQ5M0ZEIC8qIFdlYktleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE2MjgwRjMxOTE5OTgyQTAwNkFEOUY5IC8qIFdlYktpdC5tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKaW5kZXggOWMz
N2IwMDNjMWNiNzcxZDliM2Y3OWRkYTY1NTJhNDkwN2Q3ZWRkNy4uM2VjYWFmOGU4OGRmOWMzMzFl
MDM0OGVkYTUwMzc0YTRmMTAyNzMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyLmNwcApAQCAtNzAsNiArNzAsMjIgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXI6OnVuc3VzcGVuZCgpCiAgICAgZXZhbHVhdGVRdWV1ZWRFeHByZXNz
aW9ucygpOwogfQogCit2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgVmVjdG9yPFJlZjxKU09OOjpWYWx1
ZT4+JiYgYXJndW1lbnRzKQoreworICAgIFN0cmluZ0J1aWxkZXIgZXhwcmVzc2lvbjsKKyAgICBl
eHByZXNzaW9uLmFwcGVuZExpdGVyYWwoIkluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKFtc
IiIpOworICAgIGV4cHJlc3Npb24uYXBwZW5kKGNvbW1hbmQpOworICAgIGV4cHJlc3Npb24uYXBw
ZW5kTGl0ZXJhbCgiXCIiKTsKKworICAgIGZvciAoYXV0byYgYXJndW1lbnQgOiBhcmd1bWVudHMp
IHsKKyAgICAgICAgZXhwcmVzc2lvbi5hcHBlbmRMaXRlcmFsKCIsICIpOworICAgICAgICBhcmd1
bWVudC0+d3JpdGVKU09OKGV4cHJlc3Npb24pOworICAgIH0KKworICAgIGV4cHJlc3Npb24uYXBw
ZW5kTGl0ZXJhbCgiXSkiKTsKKyAgICBldmFsdWF0ZU9yUXVldWVFeHByZXNzaW9uKGV4cHJlc3Np
b24udG9TdHJpbmcoKSk7Cit9CisKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyOjpkaXNwYXRjaENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kKQogewogICAgIGV2YWx1
YXRlT3JRdWV1ZUV4cHJlc3Npb24obWFrZVN0cmluZygiSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlz
cGF0Y2goW1wiIiwgY29tbWFuZCwgIlwiXSkiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXIuaAppbmRleCBkYjY5MGU0YTQxNjA3YWRmMTAzNGNiOGU0NWEwZmIwZjVk
NjVmZDY5Li41OGVjZWI0MzUyODY0YWFhNTk2NDgyYTQ5MDBlNTZjMzlkMDJhMmU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0pT
T05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC00Miw5ICs0MywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kKCk7
CiAgICAgdm9pZCB1bnN1c3BlbmQoKTsKIAorICAgIHZvaWQgZGlzcGF0Y2hDb21tYW5kKGNvbnN0
IFN0cmluZyYgY29tbWFuZCwgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+JiYgYXJndW1lbnRzKTsK
KyAgICAvLyBGSVhNRTogc3dpdGNoIGNhbGxlcnMgb2YgdGhlc2UgbWV0aG9kcyBvdmVyIHRvIHRo
ZSBKU09OOjpWYWx1ZSBiYXNlZCB2ZXJzaW9uLgogICAgIHZvaWQgZGlzcGF0Y2hDb21tYW5kKGNv
bnN0IFN0cmluZyYgY29tbWFuZCk7CiAgICAgdm9pZCBkaXNwYXRjaENvbW1hbmQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KTsKLSAgICB2b2lkIGRpc3BhdGNo
Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmQsIGJvb2wgYXJndW1lbnQpOworICAgIHZvaWQg
ZGlzcGF0Y2hDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZCwgYm9vbAorICAgIGFyZ3VtZW50
KTsKICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUFzeW5jKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CiAKICAgICB2b2lkIGV2YWx1YXRlRXhwcmVzc2lvbkZvclRlc3RpbmcoY29uc3QgU3RyaW5nJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUkuY3BwCmluZGV4IGQ3OWJmOGJjN2JkYTcwMGRkZWY2MjQwZWRkNDllYjI0ZDM0NzJhYjQu
LmYyY2RhYmUyY2FhMDdkZjRhODZiYzkzZjNlMzZiYjI4ZjgxMzVkNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCkBA
IC0zNiwxMCArMzYsMTUgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0
b3JDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5o
PgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY1LDYgKzcwLDggQEAgV2ViSW5zcGVj
dG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBhZ2UmIHBhZ2UpCiAgICAgV2ViSW5zcGVjdG9yVUk6
OmVuYWJsZUZyb250ZW5kRmVhdHVyZXMoKTsKIH0KIAorV2ViSW5zcGVjdG9yVUk6On5XZWJJbnNw
ZWN0b3JVSSgpID0gZGVmYXVsdDsKKwogdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29u
bmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBj
b25zdCBEZWJ1Z2dhYmxlSW5mb0RhdGEmIGRlYnVnZ2FibGVJbmZvLCBib29sIHVuZGVyVGVzdCwg
dW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogewogICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKQEAgLTcyLDYgKzc5LDEwIEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciBp
bnNwZWN0ZWRQYWdlSWRlCiAgICAgbV91bmRlclRlc3QgPSB1bmRlclRlc3Q7CiAgICAgbV9pbnNw
ZWN0aW9uTGV2ZWwgPSBpbnNwZWN0aW9uTGV2ZWw7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI+KCp0aGlzKTsKKyNlbmRpZgorICAgIAogICAgIG1f
ZnJvbnRlbmRBUElEaXNwYXRjaGVyLnJlc2V0KCk7CiAKICAgICBtX2Zyb250ZW5kQ29udHJvbGxl
ciA9ICZtX3BhZ2UuY29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwpAQCAtMTY1LDYg
KzE3NiwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCiAKICAgICBtX2lu
c3BlY3RlZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7Cisg
ICAgCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29u
dHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6cmVv
cGVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUkuaAppbmRleCAwMjZhNzEyYTA4OTlkMDQ1NWYzMTg1YWI3OTc2YzE0MDA1ZDhlYmFi
Li5kNjA1YzFmMTlhNjY1MDhlMDExZjY5YTY1YzU0MGFmMmM2OTJiYmMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCkBAIC0z
MSwxMCArMzEsMTEgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JEZWJ1Z2dhYmxlVHlwZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CitjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBGbG9hdFJlY3Q7CiB9CkBA
IC00MiwxMCArNDMsMTggQEAgY2xhc3MgRmxvYXRSZWN0OwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYlBhZ2U7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3Mg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOworI2VuZGlmCiAKLWNsYXNzIFdlYklu
c3BlY3RvclVJIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViSW5zcGVjdG9yVUk+LCBwcml2YXRlIElQ
Qzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQgeworY2xhc3MgV2ViSW5zcGVjdG9yVUkgZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYkluc3BlY3RvclVJPgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkluc3Bl
Y3RvclVJPgorICAgICwgcHJpdmF0ZSBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgICwgcHVi
bGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFdlYkluc3BlY3RvclVJPiBjcmVhdGUoV2ViUGFnZSYpOworICAgIHZpcnR1YWwgfldl
Ykluc3BlY3RvclVJKCk7CiAKICAgICBzdGF0aWMgdm9pZCBlbmFibGVGcm9udGVuZEZlYXR1cmVz
KCk7CiAKQEAgLTE0OCw2ICsxNTcsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVW5kZXJUZXN0
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV91bmRlclRlc3Q7IH0KIAorICAgIFdlYlBhZ2UmIGZyb250
ZW5kUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIFdlYkluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgeyByZXR1cm4gbV9mcm9u
dGVuZEFQSURpc3BhdGNoZXI7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0
b3JVSShXZWJQYWdlJik7CiAKQEAgLTE1OSw2ICsxNzEsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBj
b3JlUGFnZSgpLCBzaW5jZSB3ZSBtYXkgbmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBwYWdl
IGhhcyBzdGFydGVkIGRlc3RydWN0aW9uLgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXIqIG1fZnJvbnRlbmRDb250cm9sbGVyIHsgbnVsbHB0ciB9OwogCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgorCiAgICAgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIGJvb2wg
bV91bmRlclRlc3QgeyBmYWxzZSB9OwogICAgIERlYnVnZ2FibGVJbmZvRGF0YSBtX2RlYnVnZ2Fi
bGVJbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEwMDFmNThjODcyMDk1MGQ2YzdlOWQ3OTBjNmI4Y2M1YWZhMjRlMWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIo
V2ViSW5zcGVjdG9yVUkmIGluc3BlY3RvcikKKyAgICA6IG1faW5zcGVjdG9yKG1ha2VXZWFrUHRy
KGluc3BlY3RvcikpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgKnRoaXMpOworfQorCitXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoKQoreworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7Cit9CisK
Ky8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVzc2FnZXMuCisKK3Zv
aWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFT
U0VSVChtX2luc3BlY3Rvcik7CisKKyAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVlPj4gYXJndW1l
bnRzIHsgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25JRCksIEpTT046OlZhbHVlOjpjcmVh
dGUoZGlzcGxheU5hbWUpIH07CisgICAgbV9pbnNwZWN0b3ItPmZyb250ZW5kQVBJRGlzcGF0Y2hl
cigpLmRpc3BhdGNoQ29tbWFuZCgicmVnaXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1l
bnRzKSk7CisKKyAgICAvLyBGSVhNRTogdXNlIHJldHVybiB2YWx1ZSBvZiB0aGUgZXZhbHVhdGlv
biB0byBkZXRlcm1pbmUgaWYgd2Ugc3VjY2VlZGVkIG9yIGZhaWxlZC4KKyAgICBjb21wbGV0aW9u
SGFuZGxlcih0cnVlKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlQobV9pbnNwZWN0b3IpOworCisgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50
cyB7IEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07CisgICAgbV9pbnNwZWN0b3It
PmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZCgidW5yZWdpc3RlckV4dGVu
c2lvbiJfcywgV1RGTW92ZShhcmd1bWVudHMpKTsKKworICAgIC8vIEZJWE1FOiB1c2UgcmV0dXJu
IHZhbHVlIG9mIHRoZSBldmFsdWF0aW9uIHRvIGRldGVybWluZSBpZiB3ZSBzdWNjZWVkZWQgb3Ig
ZmFpbGVkLgorICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMjVmMDNj
NjA4ZDkzZGJhOTMzOGQxNWY3NDdlYzEzNmYxNjI5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnNwZWN0b3JVSTsKKworY2xh
c3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIDogcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIpOworcHVibGljOgor
ICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJJbnNwZWN0
b3JVSSYpOworICAgIH5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoKTsKKworICAg
IC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKworICAgIC8vIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCByZWdpc3Rl
ckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisKK3ByaXZhdGU6CisgICAgV2Vha1B0cjxXZWJJbnNwZWN0b3JV
ST4gbV9pbnNwZWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDk3NTc4MTY1
MTMzOThkOGI1MDQ2NWFjMWYwNjdlMTgzNzI3YWFkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKwor
bWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIE5vdFJlZkNvdW50
ZWQgeworICAgIFJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIGRp
c3BsYXlOYW1lKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYworICAgIFVucmVnaXN0ZXJFeHRlbnNp
b24oU3RyaW5nIGV4dGVuc2lvbklEKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYworfQorCisjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNNYWMuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZQppbmRl
eCAxNjFkZGJhNzI3MDM2NDkzZTQ2ZDQwOGQ3ZjIzOGQ5NDc1NzMzYjBmLi45MTE5Yzc2Y2RmYzMx
MGFkMGNkZDNhMWE4NzQ0OTI3MzRhMTRiZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc01hYy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc01hYy5jbWFrZQpAQCAtNTAs
NiArNTAsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUyBQUklWQVRFIE9OKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1IgUFJJVkFURSBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlNQRUNUT1JfQUxU
RVJOQVRFX0RJU1BBVENIRVJTIFBSSVZBVEUgT04pCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfSU5TUEVDVE9SX0VYVEVOU0lPTlMgUFJJVkFURSBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9JTlNQRUNUT1JfVEVMRU1FVFJZIFBSSVZB
VEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSU5URVJTRUNU
SU9OX09CU0VSVkVSIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCBQUklWQVRFIE9OKQpkaWZmIC0tZ2l0
IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktp
dEZlYXR1cmVzLmNtYWtlCmluZGV4IDZkZjE5NzE0Y2MxYmIwYmNjMmQyMDE1MDQ5YTkzYThjMTc5
ZmJkNGEuLjViNWU3OTllZTVlODg2YTY1OTM5NDgyMmU3Yjg0YmE1YTQxZGQxMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
V2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTE1MSw2ICsxNTEsNyBAQCBtYWNybyhXRUJLSVRfT1BU
SU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9JTlBVVF9UWVBFX1RJ
TUUgIlRvZ2dsZSBJbnB1dCBUeXBlIFRpbWUgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lOUFVUX1RZUEVfV0VFSyAiVG9nZ2xlIElucHV0IFR5
cGUgV2VlayBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUyAiVG9nZ2xlIGluc3BlY3RvciBh
bHRlcm5hdGUgZGlzcGF0Y2hlcnMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCisgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX0lOU1BFQ1RPUl9FWFRFTlNJT05TICJUb2dnbGUgaW5zcGVjdG9y
IHdlYiBleHRlbnNpb25zIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9JTlNQRUNUT1JfVEVMRU1FVFJZICJUb2dnbGUgaW5zcGVjdG9yIHRlbGVt
ZXRyeSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfSU5URVJTRUNUSU9OX09CU0VSVkVSICJFbmFibGUgSW50ZXJzZWN0aW9uIE9ic2VydmVyIHN1
cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0lPU19H
RVNUVVJFX0VWRU5UUyAiVG9nZ2xlIGlPUyBnZXN0dXJlIGV2ZW50cyBzdXBwb3J0IiBQUklWQVRF
IE9GRikKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhNGFlZjM5ZGFk
NjU4MTM4MDRlZGMxNmM3NDU0MTBkMzY0NDM4MGNkLi5mMGNhZWNiZjUyNTJjZWYzYTk1OGNjMjhi
YjgwMzEyMWQ3ZTk1YTk1IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMTYgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
OTk2ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zTWFjLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKyAgICAgICAgQWRkIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUyksIHdoaWNoIGlzIG9ubHkgb24gZm9yIHRoZSBDb2NvYSBtYWNPUyBwb3J0LgorCiAy
MDIwLTEwLTE0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgQUNDRUxFUkFURURfMkRfQ0FOVkFTIGJ1aWxkIGZsYWdzIGFuZCBndWFyZGVkIGNv
ZGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413110</attachid>
            <date>2020-11-03 14:54:50 -0800</date>
            <delta_ts>2020-11-04 07:48:59 -0800</delta_ts>
            <desc>Patch v2.0</desc>
            <filename>bug-217783-20201103145449.patch</filename>
            <type>text/plain</type>
            <size>116408</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRmNGU3MWQ2ODFlMmZj
MDFhY2FiNDZkMTk1MmE4ZjJiNGJlYzk3Ny4uZTFiYjczYzQ4Nzk5MzhlYmMyNDU4M2NmNTg1ZDY3
Nzk4Y2Q3OTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTExLTAzICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4
dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5oOgorICAgICAgICBJbiBvcmRlciBmb3IgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyIHRvIHdvcmsgd2l0aCByZW1vdGUgYW5kIGxvY2FsCisgICAgICAgIGluc3BlY3RvcnMsIGl0
IHN0b3JlcyBhIHdlYWsgcG9pbnRlciB0aGUgaW5zcGVjdG9yJ3MgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuCisgICAgICAgIEV4cG9zZSB0aGUgZnJvbnRlbmQncyBwYWdlIHNvIHRoYXQgdGhlIGZy
b250ZW5kIEFQSSBkaXNwYXRjaGVyIGNhbiBkaXNwYXRjaCB0byBpdC4KKwogMjAyMC0xMS0wMyAg
QW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBhbGlnbi1jb250
ZW50IHNob3VsZCBiZSBhIGRpc2NyZXRlIGFuaW1hdGFibGUgcHJvcGVydHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCmluZGV4IDQxODAwMGQxNGI2MDZmZTA4OTQzOTlkNDJkYTM0ZTU3YzMwYzI1ZmQu
LjVmZjU3Nzc2ZjkyN2M2YWQ4M2Q5ZTg3NDhjOGI4ZmNiNWEyYjQzZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEwLTIyICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4dGVuc2lvbnM6IEFk
ZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDogQWRkIG5ldyBmaWxlcy4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2Uu
anM6CisgICAgICAgIChXSS5BcHBDb250cm9sbGVyQmFzZSk6CisgICAgICAgIChXSS5BcHBDb250
cm9sbGVyQmFzZS5wcm90b3R5cGUuZ2V0IGV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICBI
YW5nIHRoZSBleHRlbnNpb24gY29udHJvbGxlciBvZmYgb2YgdGhlIGdsb2JhbCBzaW5nbGV0b24s
IGFzIHRoZXJlIGNhbiBvbmx5IGJlIG9uZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUucmVnaXN0ZXJFeHRlbnNpb24pOgorICAg
ICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUudW5yZWdp
c3RlckV4dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3Igbm93LCBqdXN0IGtlZXAgdGhlIFVV
SURzIGluIGEgbWFwIGFuZCBsb2cgdGhlIHJlc3VsdC4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qczoKKyAgICAgICAgKFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24ucHJvdG90
eXBlLmdldCBleHRlbnNpb25JRCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24u
cHJvdG90eXBlLmdldCBkaXNwbGF5TmFtZSk6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIGEgZGF0
YSBvYmplY3QgZm9yIG5vdy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yRnJvbnRlbmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2Fk
Q29tcGxldGVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnJlZ2lzdGVyRXh0ZW5z
aW9uKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnVucmVnaXN0ZXJFeHRlbnNpb24p
OgorICAgICAgICBBZGRlZC4gRm9yd2FyZCBpbnZvY2F0aW9ucyB0byB0aGUgZXh0ZW5zaW9uIGNv
bnRyb2xsZXIuCisKIDIwMjAtMTAtMzAgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0cmEgY2xvc2luZyBwYXJlbnRoZXNp
cyBhZGRlZCBhZnRlciB2YXIgaW4gc3R5bGVzIHBhbmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzODhiOWMzYTJh
ZGE3MTk4MDJhOTEyN2Y1YTYwNWE1OWY5OGEwODIuLmU1OGRiMjZjNzU4NjExOTFjNDM4N2YxZTlh
NzU1Y2M1NjZmZDM5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3IEBACisyMDIwLTEwLTIyICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9y
IEV4dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGlzIG5l
dyBTUEkgdGhhdCByZXByZXNlbnRzIGEgV2ViIEV4dGVuc2lvbiB0aGF0IHVzZXMgdGhlICdkZXZ0
b29scycKKyAgICAgICAgQVBJIHRvIGludGVyYWN0IHdpdGggV2ViIEluc3BlY3Rvci4gQW4gZXh0
ZW5zaW9uIGlzIGFzc29jaWF0ZWQgd2l0aCBpdHMgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC4K
KyAgICAgICAgQSBXZWJLaXQgY2xpZW50IHRoYXQgc3VwcG9ydHMgV2ViIEV4dGVuc2lvbnMgY2Fu
IHVzZSB0aGlzIGNsYXNzIHRvIGltcGxlbWVudCAnZGV2dG9vbHMnIGV4dGVuc2lvbiBBUElzLgor
CisgICAgICAgIEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IG1ldGhvZHMgdG8gcmVnaXN0
ZXIgYW5kIHVucmVnaXN0ZXIgYW4gZXh0ZW5zaW9uLgorICAgICAgICBBZGQgcGx1bWJpbmcgc28g
dGhhdCB0aGUgZXh0ZW5zaW9uIGluIHJlZ2lzdGVyZWQgaW4gdGhlIGZyb250ZW5kIHdpdGggV0ku
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci4KKworICAgICAgICBMYXRlciBwYXRjaGVzIHdp
bGwgZmxlc2ggb3V0IHRoZSBuZWVkZWQgZnVuY3Rpb25hbGl0eSB0byBpbXBsZW1lbnQgcmVzdCBv
ZiB0aGUgJ2RldnRvb2xzJyBBUEkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5OiBJZiBhIG1lc3NhZ2UgaW5jbHVkZXMgSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3IsCisgICAgICAgIHRoZW4gZ2VuZXJhdGUgYW4gaW5jbHVkZSBmb3IgSW5zcGVj
dG9yRXh0ZW5zaW9uVHlwZXMuaCB3aGVyZSBpdCBpcyBkZWNsYXJlZC4KKworICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICBOZXcgQVBJIG9i
amVjdCB0eXBlLgorCisgICAgICAgICogU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmg6
IEFkZGVkIGVycm9yIGNvZGUgZW51bSBhbmQgdXNlZnVsIHR5cGUgYWxpYXNlcy4KKyAgICAgICAg
KiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOgorICAgICAgICAoV2ViS2l0Ojpp
bnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246
OmNyZWF0ZSk6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6SW5zcGVjdG9yRXh0
ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjp+SW5zcGVjdG9yRXh0
ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIFRoaXMgaXMgYSBwbGFjZWhvbGRlciBvYmplY3QgdGhh
dCdzIHVzZWQgZm9yIHRoZSB3cmFwcGVyIHN5c3RlbSwKKyAgICAgICAgc2luY2Ugd2UgZG9uJ3Qg
aGF2ZSBzaW5nbGUgQysrIG9iamVjdHMgZm9yIGVhY2ggZXh0ZW5zaW9uIHRvIGJhY2sgdGhlIEFQ
SSBvYmplY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tOgorICAgICAg
ICAoLVtfV0tJbnNwZWN0b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvciB1bnJlZ2lzdGVyRXh0
ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBJbXBsZW1lbnQgbmV3IF9XS0lu
c3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8gdGhlIEluc3BlY3RvciB3
ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb24ubW06CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBpbml0V2l0aElk
ZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBkZWFsbG9jXSk6
CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBfYXBpT2JqZWN0XSk6CisgICAgICAg
ICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBleHRlbnNpb25JRF0pOgorICAgICAgICBBZGRlZC4g
VGhpcyBpcyBhIGRhdGEgb2JqZWN0IHRoYXQncyBhbHNvIHVzZWQgYXMgYSB0b2tlbiB0byB1bnJl
Z2lzdGVyIHRoZSBleHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaDogQWRkIG5ldyBTUEkuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBJbXBs
ZW1lbnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8g
dGhlIEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0
b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOiBBZGQgRnJvbnRlbmRMb2Fk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpleHRlbnNpb25D
b250cm9sbGVyIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICBT
ZXQgdXAgdGhlIGV4dGVuc2lvbiBjb250cm9sbGVyIG9iamVjdCBhZnRlciB0aGUgZnJvbnRlbmQg
aGFzIGJlZW4gY3JlYXRlZC4KKyAgICAgICAgSG9vayB1cCB0aGUgRnJvbnRlbmRMb2FkZWQgZXZl
bnQgc2VudCBmcm9tIEluc3BlY3RvciB3ZWIgcHJvY2VzcyBzbyB0aGF0IHRoZQorICAgICAgICBl
eHRlbnNpb24gY29udHJvbGxlciBjYW4gYmUgbm90aWZpZWQgb2Ygd2hlbiBpdCdzIHNhZmUgdG8g
bWVzc2FnZSB0aGUgZnJvbnRlbmQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OmNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIFNldCB1cCB0aGUgZXh0ZW5zaW9u
IGNvbnRyb2xsZXIgb2JqZWN0IGFmdGVyIHRoZSBmcm9udGVuZCBoYXMgYmVlbiBjcmVhdGVkLgor
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZXh0ZW5zaW9uQ29udHJvbGxlciBjb25z
dCk6IEFkZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp3aGVuRnJvbnRlbmRIYXNMb2FkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6aW5zcGVj
dG9yRnJvbnRlbmRMb2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdpc3RlckV4dGVu
c2lvbik6CisgICAgICAgIEFkZGVkLiBGb3J3YXJkIEFQSSByZXF1ZXN0cyB0byB0aGUgV2ViIElu
c3BlY3RvcidzIHdlYiBwcm9jZXNzIHRvIGJlIGV2YWx1YXRlZCBpbiB0aGUgZnJvbnRlbmQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURp
c3BhdGNoZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXI6OmRpc3BhdGNoQ29tbWFuZCk6CisgICAgICAgIEFkZCBhIG1v
cmUgZ2VuZXJpYyB3YXkgdG8gZW5jb2RlIHZhbHVlcyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRz
IHRvIEluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJOjpjbG9zZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmZyb250ZW5k
UGFnZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZnJv
bnRlbmRBUElEaXNwYXRjaGVyKTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVu
cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tUmVzdWx0KToK
KyAgICAgICAgSGFuZGxlIGluY29taW5nIG1lc3NhZ2VzIGJ5IGZvcndhcmRpbmcgdGhlIGFzc29j
aWF0ZWQgY29tbWFuZCB0byBXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyCisgICAgICAgIHZpYSBJ
bnNwZWN0b3JGcm9udGVuZEFQSSBldmFsdWF0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICBGYWxsb3V0IGZyb20gdW5pZmllZCBi
dWlsZCBjaHVua2luZyBzaGlmdHMuCisKIDIwMjAtMTEtMDMgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSByZW1vdmUgc3lzY3RsLm9pZGZtdC4g
YWNjZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oCmluZGV4IDBhNzlkODZiM2M0Njk3NzgxNGE2OGY0ZWFhZWRiOGE4ZWU5ZmZiYTMu
LmU4ZDEzYTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zNiwx
NCArMzYsMTYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dhYmxlVHlwZS5oIgogI2luY2x1
ZGUgIlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOworY2xhc3MgUGFnZTsKIAotY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQgeworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IHsKIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIERvY2tTaWRlIHsKICAgICAgICAgVW5kb2NrZWQgPSAwLApAQCAtMTEx
LDYgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXImIGZyb250ZW5kQVBJRGlz
cGF0Y2hlcigpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhZ2UqIGZyb250ZW5k
UGFnZSgpID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBpc1VuZGVyVGVz
dCgpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCAxMTgxYTIwOTZjMTc2MGRmMjI5MzI2MDEw
NmM1ZDA5NWM0MWQzNDFhLi5hZDE4ZjYwODA1ZDFjZTE2ZTY5NDJlZjMyNzAyOTk0ODQ1OWFlNzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmgKQEAgLTk1LDcgKzk1LDggQEAgcHVibGljOgogICAgIFN0cmluZyBi
YWNrZW5kQ29tbWFuZHNVUkwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdHJpbmcoKTsgfTsKIAog
ICAgIEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVy
KCkgZmluYWwgeyByZXR1cm4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7IH0KLQorICAgIFBhZ2Uq
IGZyb250ZW5kUGFnZSgpIGZpbmFsIHsgcmV0dXJuIG1fZnJvbnRlbmRQYWdlOyB9CisgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldERvY2tpbmdVbmF2YWlsYWJsZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxl
ckJhc2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9BcHBDb250cm9sbGVyQmFzZS5qcwppbmRleCA2MWQ0YzQ1OTQ0ZGI2Njk1NWQwMDA5NzNhM2U2
ZGVhM2FlNjZlYTU2Li4wMDI1Mzc0Yjc4ZDcwYzA3ZmZmZDhiYjNlNGFlMTJlMDM4OGViZjYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9BcHBDb250cm9sbGVyQmFzZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qcwpAQCAtNDEsMTEgKzQxLDE0
IEBAIFdJLkFwcENvbnRyb2xsZXJCYXNlID0gY2xhc3MgQXBwQ29udHJvbGxlckJhc2UKICAgICBj
b25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlOwor
CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBuZXcgV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uQ29udHJvbGxlcjsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBk
ZWJ1Z2dhYmxlVHlwZSgpIHsgdGhyb3cgV0kuTm90SW1wbGVtZW50ZWRFcnJvci5zdWJjbGFzc011
c3RPdmVycmlkZSgpOyB9CisgICAgZ2V0IGV4dGVuc2lvbkNvbnRyb2xsZXIoKSB7IHJldHVybiB0
aGlzLl9leHRlbnNpb25Db250cm9sbGVyOyB9CiAKICAgICAvLyBTaW5jZSB2YXJpb3VzIG1lbWJl
cnMgb2YgdGhlIGFwcCBjb250cm9sbGVyIGRlcGVuZCBvbiB0aGUgZ2xvYmFsIHNpbmdsZXRvbiB0
byBleGlzdCwKICAgICAvLyBzb21lIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGhhcHBlbiBhZnRl
ciB0aGUgYXBwIGNvbnRyb2xsZXIgaGFzIGJlZW4gY29uc3RydWN0ZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0
b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZmFmM2VmNWE2N2NhMzBmOWQyMjRiZjQ5YWIzMTc5NGUzNjQxOTU5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdl
Ykluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBj
b25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2V4
dGVuc2lvbklETWFwID0gbmV3IE1hcDsKKyAgICB9CisKKyAgICByZWdpc3RlckV4dGVuc2lvbihl
eHRlbnNpb25JRCwgZGlzcGxheU5hbWUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZXh0ZW5z
aW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgeworICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJu
YWxFcnJvcigiVW5hYmxlIHRvIHJlZ2lzdGVyIGV4dGVuc2lvbiwgaXQncyBhbHJlYWR5IHJlZ2lz
dGVyZWQ6ICIsIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CisgICAgICAgICAgICByZXR1cm4g
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5SZWdpc3RyYXRpb25GYWlsZWQ7Cisg
ICAgICAgIH0KKworICAgICAgICBsZXQgZXh0ZW5zaW9uID0gbmV3IFdJLldlYkluc3BlY3RvckV4
dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOworICAgICAgICB0aGlzLl9leHRlbnNp
b25JRE1hcC5zZXQoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbik7CisKKyAgICAgICAgY29uc29sZS5s
b2coIlJlZ2lzdGVyZWQgZXh0ZW5zaW9uOiAiLCBleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOwor
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5XZWJJbnNwZWN0b3JFeHRl
bnNpb25Db250cm9sbGVyLkV2ZW50LkV4dGVuc2lvbkFkZGVkLCB7ZXh0ZW5zaW9ufSk7CisgICAg
fQorCisgICAgdW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fZXh0ZW5zaW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgeworICAgICAgICAg
ICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIHVucmVnaXN0ZXIgZXh0ZW5zaW9u
IHdpdGggdW5rbm93biBJRDogIiwgZXh0ZW5zaW9uSUQpOworICAgICAgICAgICAgcmV0dXJuIFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJlcXVlc3Q7CisgICAgICAg
IH0KKworICAgICAgICBsZXQgZXh0ZW5zaW9uID0gdGhpcy5fZXh0ZW5zaW9uSURNYXAuZ2V0KGV4
dGVuc2lvbklEKTsKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uSURNYXAuZGVsZXRlKGV4dGVuc2lv
bklEKTsKKworICAgICAgICBjb25zb2xlLmxvZygiVW5yZWdpc3RlcmVkIGV4dGVuc2lvbjogIiwg
ZXh0ZW5zaW9uSUQpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50LkV4dGVuc2lvblJlbW92ZWQsIHtl
eHRlbnNpb259KTsKKyAgICB9Cit9OworCitXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9s
bGVyLkV2ZW50ID0geworICAgIEV4dGVuc2lvbkFkZGVkOiAiZXh0ZW5zaW9uLWFkZGVkIiwKKyAg
ICBFeHRlbnNpb25SZW1vdmVkOiAiZXh0ZW5zaW9uLXJlbW92ZWQiLAorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBkOTk4ZDdjZWVkNzdh
Yzk4ZjljM2I1ZDJkY2YwZTU0MWQ5YTkzYzJhLi4wNzE3NGRjNGY2NTgzMzYwMzgwYTRmOGNiMjg1
N2NlNTJmNDM2MGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCkBAIC00ODgsNiArNDg4LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1R5
cGVEZXNjcmlwdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9UeXBl
U2V0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1VSTEJyZWFrcG9pbnQu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dlYlNvY2tldFJlc291
cmNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dyYXBwZWRQcm9taXNl
LmpzIj48L3NjcmlwdD4KIApAQCAtODkyLDYgKzg5Myw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL0hBUkJ1aWxkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250
cm9sbGVycy9IZWFwTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRy
b2xsZXJzL0luZGV4ZWREQk1hbmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVy
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvSmF2YVNjcmlwdFJ1
bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9MYXllclRyZWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRl
bnNpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlZTQ3NTAyMWVkNWJlY2MwYzlhZTg3
MTRjNTU2ZmE0ODEwOTc3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24gPSBjbGFzcyBX
ZWJJbnNwZWN0b3JFeHRlbnNpb24gZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rv
cihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpCisgICAgeworICAgICAgICBzdXBlcigpOworCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBleHRlbnNpb25JRCA9PT0gInN0cmluZyIsIGV4
dGVuc2lvbklEKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIGRpc3BsYXlOYW1lID09
PSAic3RyaW5nIiwgZGlzcGxheU5hbWUpOworCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbklEID0g
ZXh0ZW5zaW9uSUQ7CisgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7Cisg
ICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZXh0ZW5zaW9uSUQoKSB7IHJldHVybiB0
aGlzLl9leHRlbnNpb25JRDsgfQorICAgIGdldCBkaXNwbGF5TmFtZSgpIHsgcmV0dXJuIHRoaXMu
X2Rpc3BsYXlOYW1lOyB9Cit9OworCisvLyBOb3RlOiB0aGVzZSB2YWx1ZXMgYXJlIHN5bm9ueW1v
dXMgd2l0aCB0aGUgdmFsdWVzIG9mIGVudW0gY2xhc3MgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvci4KK1dJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUgPSB7CisgICAgSW50
ZXJuYWxFcnJvcjogIkludGVybmFsRXJyb3IiLAorICAgIEludmFsaWRSZXF1ZXN0OiAiSW52YWxp
ZFJlcXVlc3QiLAorICAgIEludmFsaWRTdGF0ZTogIkludmFsaWRTdGF0ZSIsCisgICAgUmVnaXN0
cmF0aW9uRmFpbGVkOiAiUmVnaXN0cmF0aW9uRmFpbGVkIiwKKyAgICBSZXNvdXJjZUxvYWRGYWls
ZWQ6ICJSZXNvdXJjZUxvYWRGYWlsZWQiLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJv
bnRlbmRBUEkuanMKaW5kZXggMWQxZjI4OGJiODM0ZDQ4MmY2NGUzOWVmMGZiZDUzODZkODc0ZGVm
MC4uOWMxNDhhOWY4Y2VmNjk5ZmQ1MjYyMzU2N2JkOTg3OGNlNzNmYmM0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJv
bnRlbmRBUEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTE5Niw1ICsxOTYsMTcgQEAgSW5zcGVj
dG9yRnJvbnRlbmRBUEkgPSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNw
YXRjaChJbnNwZWN0b3JGcm9udGVuZEFQSS5fcGVuZGluZ0NvbW1hbmRzW2ldKTsKIAogICAgICAg
ICBkZWxldGUgSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kczsKKyAgICB9LAor
CisgICAgLy8gUmV0dXJucyBhIFdJLldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUgaWYg
YW4gZXJyb3Igb2NjdXJyZWQsIG90aGVyd2lzZSBub3RoaW5nLgorICAgIHJlZ2lzdGVyRXh0ZW5z
aW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBXSS5z
aGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJvbGxlci5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25J
RCwgZGlzcGxheU5hbWUpOworICAgIH0sCisKKyAgICAvLyBSZXR1cm5zIGEgV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLkVycm9yQ29kZSBpZiBhbiBlcnJvciBvY2N1cnJlZCwgb3RoZXJ3aXNlIG5v
dGhpbmcuCisgICAgdW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBXSS5zaGFyZWRBcHAuZXh0ZW5zaW9uQ29udHJvbGxlci51bnJlZ2lzdGVyRXh0
ZW5zaW9uKGV4dGVuc2lvbklEKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGMwZWZjYWQ1NzQ1MDNhOGE5YWI3YzdlYzA1
ZWY0NTlkMzA1NGYzOWYuLjFhMzliMDVhNDYwZjMzZDllNzg4YzIzZjUyZmQ0ZDc2Y2QwNGNmNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAg
LTk1LDYgKzk1LDcgQEAgJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2Fn
ZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Np
b25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVBy
b2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkubWVzc2FnZXMuaW4KQEAgLTE0MSw2ICsxNDIsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmlu
CiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1
cHREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMjYyZmJkMTMz
ZTg1OGJjMzkxMTllMjRjZTYxNjU5ZjA1ZWUxZWI2ZS4uOGRjMWQyZjU0OTQzNjNkNzQxNzdhMWYy
N2MzOTA2MTQ2OTRiMDEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CkBAIC0zNDUsNiArMzQ1LDkgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXNS
ZXAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNl
cnZlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzUmVwbGllcy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9y
SW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNo
ZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAzZWIyNDYxMzYxNWE0ZTcxZjBlOGVhMmMxMzNhZmZj
MGY4YzYxNDFkLi45ODRlYzQ5NTUxYWFjNGFhY2QwN2M5MDk0MGVkNGFlMTBlYjA4MDJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xODMsNiArMTgzLDcgQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIgXAogCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNo
ZXIgXAogCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJIFwKKwlXZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgXAogCVdlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvciBcCiAJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yVUkgXAogCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggM2I4MjM2ZGE4M2Q3YzY2MjM5M2MxNDc3ZjRmOWFlMDU3NzM1MzY3OS4uNDM5OTM2NjRhMTMx
ODFlZTMzNmUzMTE0OTBkYmNhYWYzN2E0MTQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CkBAIC02NzIsNiArNjcyLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUo
dHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkZpbmRPcHRpb25zJzogWyciV2ViRmluZE9wdGlvbnMu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSc6IFsnIkdlc3R1
cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlVHlwZSc6IFsnIkdlc3R1cmVU
eXBlcy5oIiddLAorICAgICAgICAnV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcic6IFsn
Ikluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9z
dGluZ0NvbnRleHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dl
YktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggNmQwNjU2NDVkY2VlNjJlNTlkNTBkYmVmMzc0MzVh
NDlhODBlYjY4Mi4uYjdiN2VlNjg4YWE2ZmY4OTA1YTIxYjc3OGQ0ZDk2MzUyMjUxNjM5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTM3LDYgKzEzNyw5IEBAIHB1Ymxp
YzoKICAgICAgICAgSWNvbkRhdGFiYXNlLAogICAgICAgICBJbnNwZWN0b3IsCiAgICAgICAgIElu
c3BlY3RvckNvbmZpZ3VyYXRpb24sCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
ICAgICAgICBJbnNwZWN0b3JFeHRlbnNpb24sCisjZW5kaWYKICAgICAgICAgS2V5VmFsdWVTdG9y
YWdlTWFuYWdlciwKICAgICAgICAgTWVkaWFDYWNoZU1hbmFnZXIsCiAgICAgICAgIE1lc3NhZ2VM
aXN0ZW5lciwKQEAgLTM4Miw2ICszODUsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PEFQSTo6T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJY29uRGF0
YWJhc2UsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3IsCiAgICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uLAorI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Okluc3BlY3RvckV4
dGVuc2lvbiwKKyNlbmRpZgogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6S2V5VmFsdWVTdG9y
YWdlTWFuYWdlciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lZGlhQ2FjaGVNYW5hZ2Vy
LAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6TWVzc2FnZUxpc3RlbmVyLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IGM5NDIwY2Q1ZjIwZGIxMTk5YTJmZjBh
NTM1Y2UwMDljZjkyODY1YTQuLmY4YTAyOGIwNmI1MTA2MTA4ZGRjM2NiYjY4YTQwMWJmYTM1Zjdk
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTk5LDYgKzk5
LDEwIEBACiAjaW1wb3J0ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCIKICNlbmRp
ZgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNlbmRpZgorCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1p
bmltdW1PYmplY3RBbGlnbm1lbnQgPSBhbGlnbm9mKHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+Ojp0eXBlKTsKIHN0YXRpY19hc3NlcnQobWlu
aW11bU9iamVjdEFsaWdubWVudCA+PSBhbGlnbm9mKHZvaWQqKSwgIk9iamVjdHMgc2hvdWxkIGFs
d2F5cyBiZSBhdCBsZWFzdCBwb2ludGVyLWFsaWduZWQuIik7CiBzdGF0aWMgY29uc3Qgc2l6ZV90
IG1heGltdW1FeHRyYVNwYWNlRm9yQWxpZ25tZW50ID0gbWluaW11bU9iamVjdEFsaWdubWVudCAt
IGFsaWdub2Yodm9pZCopOwpAQCAtMjcwLDYgKzI3NCwxMiBAQCB2b2lkKiBPYmplY3Q6Om5ld09i
amVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0gW19XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24gYWxsb2NdOwogICAgICAgICBicmVhazsKIAorI2lmIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBjYXNlIFR5cGU6Okluc3BlY3RvckV4dGVuc2lvbjoK
KyAgICAgICAgd3JhcHBlciA9IFtfV0tJbnNwZWN0b3JFeHRlbnNpb24gYWxsb2NdOworICAgICAg
ICBicmVhazsKKyNlbmRpZgorCiAgICAgY2FzZSBUeXBlOjpOYXZpZ2F0aW9uOgogICAgICAgICB3
cmFwcGVyID0gW1dLTmF2aWdhdGlvbiBhbGxvY107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU3NDgyZjg4YzhhNTZmMDE3Yzc4NWNiY2JlOGJmZDc0NDU0MzVlNWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXVEY6OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKElu
c3BlY3RvckV4dGVuc2lvbkVycm9yIGVycm9yKQoreworICAgIHN3aXRjaCAoZXJyb3IpIHsKKyAg
ICBjYXNlIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOgorICAgICAgICBy
ZXR1cm4gIkludGVybmFsRXJyb3IiX3M7CisgICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJv
cjo6SW52YWxpZFJlcXVlc3Q6CisgICAgICAgIHJldHVybiAiSW52YWxpZFJlcXVlc3QiX3M7Cisg
ICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFN0YXRlOgorICAgICAgICBy
ZXR1cm4gIkludmFsaWRTdGF0ZSJfczsKKyAgICBjYXNlIEluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpDb250ZXh0RGVzdHJveWVkOgorICAgICAgICByZXR1cm4gIkNvbnRleHREZXN0cm95ZWQiX3M7
CisgICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkOgor
ICAgICAgICByZXR1cm4gIlJlZ2lzdHJhdGlvbkZhaWxlZCJfczsKKyAgICBjYXNlIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpSZXNvdXJjZUxvYWRGYWlsZWQ6CisgICAgICAgIHJldHVybiAiUmVz
b3VyY2VMb2FkRmFpbGVkIl9zOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiAiSW50ZXJuYWxFcnJvciI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBlYzJiOTBl
MjcyYjQ3OTFjMzMxN2Y3ZjkzM2U4YjA1NjhhNDZiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKQEAgLTAsMCArMSw2NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3VzaW5nIEluc3BlY3RvckV4dGVuc2lvblRhYklEID0gV1RGOjpTdHJpbmc7Cit1c2luZyBJ
bnNwZWN0b3JFeHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOworCitlbnVtIGNsYXNzIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CisgICAgSW50ZXJuYWxFcnJvciwKKyAgICBJbnZh
bGlkUmVxdWVzdCwKKyAgICBJbnZhbGlkU3RhdGUsCisgICAgQ29udGV4dERlc3Ryb3llZCwKKyAg
ICBSZWdpc3RyYXRpb25GYWlsZWQsCisgICAgUmVzb3VyY2VMb2FkRmFpbGVkLAorfTsKKworV1RG
OjpTdHJpbmcgaW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVy
cm9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvciwKKyAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6SW50ZXJuYWxFcnJvciwKKyAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6SW52YWxpZFJlcXVlc3QsCisgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I6OkludmFsaWRTdGF0ZSwKKyAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCwKKyAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkLAorICAgICAgICBXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpSZXNvdXJjZUxvYWRGYWlsZWQKKyAgICA+OworfTsKKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZTBh
Yjc0MzZiYWRjMzQ2Mzc0OTQ2NjMzNDcxOWI0NWVkZmQyYjMwNi4uMzE1ZWZiMDNkMzY0MGQzNzEz
ODhmNmQwMmIyMmZjNDA5M2VhOGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNjEsNiArMTYxLDcgQEAg
U2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKIFNoYXJlZC9G
b250SW5mby5jcHAKIFNoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAorU2hhcmVkL0luc3BlY3RvckV4
dGVuc2lvblR5cGVzLmNwcAogU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuY3BwCiBTaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuY3BwCiBTaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCkBAIC00MzYs
NiArNDM3LDcgQEAgVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJveHkuY3BwCitVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVdGls
aXRpZXMuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VEZWJ1Z2dhYmxlLmNwcAogVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU0OSw2
ICs1NTEsNyBAQCBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuY3BwCiBXZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUkuY3BwCitXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvclRh
cmdldENvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDk5YmVh
MWZiNTllOTZkNmEwMGVmMWJiYTA4YTcyNGIxZjI4ODcwMDQuLjYwNWVhODNmMTBkNGIwYWNkN2Ez
NDZmYzEzZTI3YjU0ZDZlZjg1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1OSw2ICsy
NTksNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvclRlc3RpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RGVidWdnYWJsZUluZm8ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvcldpbmRvdy5tbQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnRlcm5hbERlYnVnRmVhdHVyZS5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTBmMThhZmUy
Yzk0ZWM5NzUyN2Y2YjdhZmI0MGRhY2VlZTA0ODBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0wLDAgKzEs
NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb24gZmlu
YWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6SW5zcGVjdG9yRXh0ZW5z
aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JFeHRlbnNpb24+IGNyZWF0
ZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEluc3BlY3RvckV4dGVuc2lvbihpZGVudGlmaWVyKSk7CisgICAgfQorCisg
ICAgZXhwbGljaXQgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFdURjo6U3RyaW5nIG1faWRlbnRpZmllcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3Rvci5oCmluZGV4IDE4OTllODE4YjM2M2U4NWQ0NjBiMzA5NzNiNGFhMGQ0ODg5OTU5OWUuLjg2
YjFjZjg5NjI3OGYxOTcyYjlhNzk5N2M0OTI3NGQxZWVkY2NmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLmgKQEAgLTI1LDE3ICsyNSwx
NSBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb25I
b3N0Lmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBXS1dlYlZpZXc7CiBA
Y2xhc3MgX1dLRnJhbWVIYW5kbGU7CitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOwogQHBy
b3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlOwogCi1OU19BU1NVTUVfTk9OTlVMTF9CRUdJTgot
Ci1AcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdAotLSAodm9pZCljbG9zZTsKLUBl
bmQKLQogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpCiBAaW50
ZXJmYWNlIF9XS0luc3BlY3RvciA6IE5TT2JqZWN0IDxfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0
PgogCkBAIC01Miw2ICs1MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwg
aW9zKDEyLjIpKQogCiAtICh2b2lkKWNvbm5lY3Q7CiAtICh2b2lkKXNob3c7CistICh2b2lkKWNs
b3NlOwogLSAodm9pZCloaWRlOwogLSAodm9pZClzaG93Q29uc29sZTsKIC0gKHZvaWQpc2hvd1Jl
c291cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yLm1tCmluZGV4IDY3MzQxMWYzMGVmMWQxMDhlMWQ0NDQ3NDE5NGJjY2E4ZjkzZDFmNmIu
LjZjMDBiOTZkZDE5NWQwMThmNmYzNjMyOTdiOGU5YWY0MzY2YzRlZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQpAQCAtMjcsNiAr
MjcsNyBAQAogI2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiSW5z
cGVjdG9yRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLV2ViVmll
d0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NQcm94eS5oIgpAQCAtMzcsNiArMzgsMTMgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisjaW1wb3J0ICJX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2Vu
ZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0b3IKIAogLy8gTUFSSzogX1dLSW5zcGVj
dG9yIG1ldGhvZHMKQEAgLTE5NCw0ICsyMDIsMzggQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmpl
Y3QKICAgICByZXR1cm4gKl9pbnNwZWN0b3I7CiB9CiAKKy8vIE1BUks6IF9XS0luc3BlY3RvckV4
dGVuc2lvbkhvc3QgbWV0aG9kcworCistICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihO
U1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1l
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQorICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS5yZWdpc3RlckV4dGVu
c2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0ZWRFeHRlbnNpb25JRCA9IHJl
dGFpblB0cihleHRlbnNpb25JRCksIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNh
cHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8
Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2Vy
SW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogaW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIo
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQo
KSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdKTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlv
bkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9yVW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOworI2VuZGlmCit9CisKKy0gKHZvaWQpdW5y
ZWdpc3RlckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopZXh0ZW5zaW9uIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9u
Q29udHJvbGxlcigpLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVuc2lvbklELCBb
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdCkg
eworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tF
cnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFp
bHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3Vs
dC5lcnJvcigpKX1dKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGNhcHR1cmVkQmxvY2sobmlsKTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRs
ZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpuaWxdKTsKKyNlbmRpZgorfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmM1YTYwMWVkMmNmMzE0ZTdhOGJmODYyMzllODBiNGIxYWE5YmM4MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JFeHRlbnNpb24uaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+
CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSkKK0BpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIDogTlNPYmplY3QK
KworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKmV4dGVuc2lvbklEOworCitAZW5kCisKK05TX0FT
U1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y3ZGU5NDNk
NWFjMzEzMWZkMTU3ZmM4ZmI1ODU5ZjEyNzE4NDEzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KQEAg
LTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKworTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KKworQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvckV4dGVuc2lvbgorCisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlm
aWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklECit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0
SW5XcmFwcGVyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPihzZWxmLCBleHRlbnNpb25JRCk7Cisg
ICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9leHRl
bnNpb24tPkFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjp+SW5zcGVjdG9yRXh0ZW5zaW9uKCk7CisK
KyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
K3sKKyAgICByZXR1cm4gKl9leHRlbnNpb247Cit9CisKKy8vIE1BUks6IFByb3BlcnRpZXMuCisK
Ky0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKK3sKKyAgICByZXR1cm4gX2V4dGVuc2lvbi0+aWRl
bnRpZmllcigpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTg3ZDk2Mzk4MjcxY2EzZmIxZTk5MTM3NDI0OGRiZGQ3ZDQzMzUxMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uOworCitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdAorQG9wdGlvbmFs
CisKKy8qKgorICogQGFic3RyYWN0IFJlZ2lzdGVycyBhIFdlYiBFeHRlbnNpb24gd2l0aCB0aGUg
YXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yLgorICogQHBhcmFtIGV4dGVuc2lvbklEIEEgdW5pcXVl
IGlkZW50aWZpZXIgZm9yIHRoZSBleHRlbnNpb24uCisgKiBAcGFyYW0gZGlzcGxheU5hbWUgQSBs
b2NhbGl6ZWQgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9uLgorICogQHBhcmFtIGNvbXBs
ZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gcmVn
aXN0cmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgorICoKKyAqIFdlYiBFeHRlbnNpb25zIGluIFdl
YiBJbnNwZWN0b3IgYXJlIGFjdGl2ZSBhcyBzb29uIGFzIHRoZXkgYXJlIHJlZ2lzdGVyZWQuCisg
Ki8KKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9u
SUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051
bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyoqCisgKiBAYWJzdHJhY3QgVW5yZWdpc3Rl
cnMgYSBXZWIgRXh0ZW5zaW9uIHdpdGggdGhlIGFzc29jaWF0ZWQgV2ViIEluc3BlY3Rvci4KKyAq
IEBwYXJhbSBleHRlbnNpb25JRCBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZXh0ZW5zaW9u
LgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8g
YmUgY2FsbGVkIHdoZW4gdW5yZWdpc3RlcmluZyBzdWNjZWVkcyBvciBmYWlscy4KKyAqCisgKiBV
bnJlZ2lzdGVyaW5nIGFuIGV4dGVuc2lvbiB3aWxsIGF1dG9tYXRpY2FsbHkgY2xvc2UgYW55IGFz
c29jaWF0ZWQgc2lkZWJhcnMvdGFicy4KKyAqLworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9u
OihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qKgorICog
QGFic3RyYWN0IENsb3NlcyB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yIGluc3RhbmNlLiBU
aGlzIHdpbGwgY2F1c2UgYWxsCisgKiByZWdpc3RlcmVkIF9XS0luc3BlY3RvckV4dGVuc2lvbnMg
dG8gYmUgdW5yZWdpc3RlcmVkIGFuZCBpbnZhbGlkYXRlZC4KKyAqLworLSAodm9pZCljbG9zZTsK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRl
cm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkwYzQ1ZDU0MDg4MWQ1NGY4NzQ3ZDIxNTY0MmNkODhhZmM5ZDBk
MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaApAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQgIkFQSUluc3BlY3RvckV4dGVuc2lvbi5oIgor
I2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4g
c3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKKyAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBfV0tJbnNwZWN0b3JFeHRlbnNpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tJ
bnNwZWN0b3JFeHRlbnNpb24gKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4gX2V4dGVuc2lvbjsKK30KKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilleHRlbnNpb25JZGVu
dGlmaWVyOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaAppbmRleCBiOWE4YjIwMjAwNTI5YTQyZGE0YWZjMjNkNGZkNGNmMTIwYzg2
ODFjLi5iYTNmYzEzM2IzZmE1NjAyYTdmZDRiNzVmOTJiYjQzMmM2OGU0NDg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaApAQCAtMjQsNiArMjQsNyBAQAog
ICovCiAKICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmg+CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogCkBA
IC00NCw3ICs0NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLUmVtb3RlV2ViSW5z
cGVjdG9yRGVidWdnYWJsZVR5cGUpIHsKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMi4z
KSwgaW9zKDEwLjMpKTsKIAogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEyLjMpLCBpb3Mo
MTAuMykpCi1AaW50ZXJmYWNlIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIDog
TlNPYmplY3QKK0BpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIg
OiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdD4KIAogQHByb3BlcnR5IChub25h
dG9taWMsIGFzc2lnbikgaWQgPF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyRGVs
ZWdhdGU+IGRlbGVnYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KaW5kZXggNGU0MGI4YjdhNzVmNWY3MDM1NWQwMWRkNzU1N2NkYjFiYWFmYzQ0Yy4u
OTFiZDU4ZjRkMTIyOGI4ZmU0ZjUwMWQyYzhmOGE1ZDBhNzNlYTc3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMzYsNiArMzYsMTQgQEAKICNp
bXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
SW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisjaW1wb3J0
ICJXS0Vycm9yLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgorI2VuZGlmCisKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAK
IEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKCkKQEAgLTE4
Miw2ICsxOTAsNDAgQEAgLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZTooaWQ8
X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4gX051bGxhYmwKICAgICBtX3JlbW90ZUluc3Bl
Y3RvclByb3h5LT5zZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSghIWRlbGVnYXRlKTsKIH0K
IAorLy8gTUFSSzogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBtZXRob2RzCisKKy0gKHZvaWQp
cmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5h
bWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNF
cnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94
eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBk
aXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklE
KSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3Vs
dCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46
V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVk
RmFpbHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Okluc3BlY3RvckV4dGVu
c2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpKSkgcmV0YWluXSBhdXRvcmVs
ZWFzZV0pOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
Om5pbF0sIG5pbCk7CisjZW5kaWYKK30KKworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKyAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9s
bGVyKCkudW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0
ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAg
ICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVh
c29uRXJyb3JLZXk6IGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9y
KCkpfV0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FwdHVy
ZWRCbG9jayhuaWwpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNF
cnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVz
ZXJJbmZvOm5pbF0pOworI2VuZGlmCit9CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBiMDQ3MzkzMWQ3MzEwZjI1OGU5YmVjY2U3
MGNlNTIyYzg5YTdlOWU0Li5mNWEwMjJlYTJlMGM5NzNkYjgzMjlmMDg4YzU4YzcwMTkzYjA5M2Iy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05NSw2ICs5OSwx
MyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSk7
CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kTG9hZGVkKCkKK3sK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9s
bGVyLT5pbnNwZWN0b3JGcm9udGVuZExvYWRlZCgpOworI2VuZGlmCit9CisKIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kRGlkQ2xvc2UoKQogewogICAgIFJlZjxSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eT4gcHJvdGVjdCgqdGhpcyk7CkBAIC0xNzUsNiArMTg2LDEwIEBAIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygp
CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
aW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdl
Ykluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOworCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+KCptX2luc3BlY3RvclBhZ2Up
OworI2VuZGlmCiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRl
bmRQYWdlQW5kV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKaW5kZXggYzAzYTJjYTU3MGQ5
ZjZmODBlYmFhZTU0ZmI5M2FkMjU3MGNiNWZhYS4uMGYxYzA5OGY0MzU5ZDQzZTViZTg1ZGYxN2I2
Yjg2NTNmMTBlYjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKQEAgLTU2LDYgKzU2LDkgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTsKIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlZpZXc7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk7Cisj
ZW5kaWYKIAogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgewogcHVibGljOgpA
QCAtODgsNiArOTEsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKyAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5z
aW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0K
KyNlbmRpZgorICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBOU1dpbmRvdyAqd2luZG93KCkg
Y29uc3QgeyByZXR1cm4gbV93aW5kb3cuZ2V0KCk7IH0KICAgICBXS1dlYlZpZXcgKndlYlZpZXco
KSBjb25zdDsKQEAgLTExNyw2ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcy4KKyAgICB2b2lkIGZyb250ZW5k
TG9hZGVkKCk7CiAgICAgdm9pZCBmcm9udGVuZERpZENsb3NlKCk7CiAgICAgdm9pZCByZW9wZW4o
KTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKTsKQEAgLTE0OSw2ICsxNTcsMTAgQEAgcHJpdmF0ZToK
ICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07
CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRyIH07CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7Cisj
ZW5kaWYKKyAgICAKICAgICBSZWY8QVBJOjpEZWJ1Z2dhYmxlSW5mbz4gbV9kZWJ1Z2dhYmxlSW5m
bzsKICAgICBTdHJpbmcgbV9iYWNrZW5kQ29tbWFuZHNVUkw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzYmVmZmQ1MWFkOTRiZjA1NWU0OTcyYjZjY2Rm
MjkyNzc5MjY0ZjIxLi42NzRiZWMzMjQ2ZDM4ODkzZDU1MmU0NjZiN2VkN2VjZDJlMDhmZGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSw2ICsyMSw3
IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVdlYkluc3BlY3RvclByb3h5
IHsKKyAgICBGcm9udGVuZExvYWRlZCgpCiAgICAgRnJvbnRlbmREaWRDbG9zZSgpCiAgICAgUmVv
cGVuKCkKICAgICBSZXNldFN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IGYwZjdiMmRmNWU0MTky
YWM0NTQ4YjhmN2JjYjk5N2QxZjEzMGQ0NjAuLjA4MGIxNThmMDFmN2JkOTZiMTAwMTQ0MTRkNTVj
NGM3OGNhNTZhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IldlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
Ykluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VH
cm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCkBAIC00MjEs
NiArNDIyLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSgp
CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVj
dGVkUGFnZS0+aWRlbnRpZmllcigpLCAqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqbV9pbnNwZWN0b3JQYWdlLCBXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PigqbV9pbnNwZWN0b3JQYWdlKTsKKyNl
bmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9u
dGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpCkBAIC01NDYsNiArNTUxLDEwIEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKICAg
ICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0Zm9ybURldGFjaCgpOwogCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG51
bGxwdHI7CisjZW5kaWYKKyAgICAKICAgICAvLyBOdWxsIG91dCBtX2luc3BlY3RvclBhZ2UgYWZ0
ZXIgcGxhdGZvcm1EZXRhY2goKSwgc28gdGhlIHZpZXdzIGNhbiBiZSBjbGVhbmVkIHVwIGNvcnJl
Y3RseS4KICAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwogCkBAIC01NzEsNiArNTgwLDEw
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kTG9hZGVkKCkKIAogICAgIGlmIChh
dXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnByb2Nl
c3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgYXV0b21hdGlvblNlc3Npb24t
Pmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCptX2luc3BlY3RlZFBhZ2UpOworICAgIAorI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXItPmlu
c3BlY3RvckZyb250ZW5kTG9hZGVkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6YnJpbmdUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggMTRkNDc3ZThkNzlhMWMzOTc5YWM1
YTg5NzYwYmMzZGYwZjVlOWM4NC4uZjU1NDFiZjcwMjgxN2ViYzhiZTM2NTI1ZGFjMzA5Zjg2NTQ1
OGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY5LDYgKzcwLDkg
QEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5Q2xpZW50Owog
Y2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk7CisjZW5kaWYKIAogZW51bSBjbGFzcyBBdHRhY2htZW50U2lkZSB7CiAgICAgQm90
dG9tLApAQCAtODAsNiArODQsNyBAQCBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eQogICAgIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yPgogICAgICwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JQcm94
eT4KICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6V2luZG93TWVzc2Fn
ZUxpc3RlbmVyCiAjZW5kaWYKQEAgLTEwMiw2ICsxMDcsMTAgQEAgcHVibGljOgogICAgIFdlYlBh
Z2VQcm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsg
fQogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5z
cGVjdG9yUGFnZTsgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29udHJvbGxlcjsgfQorI2VuZGlmCisKICAg
ICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0K
ICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAgICAg
Ym9vbCBpc0Zyb250KCk7CkBAIC0yODYsNiArMjk1LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUGFn
ZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRyIH07CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEFQSTo6SW5zcGVjdG9yQ2xpZW50PiBtX2luc3BlY3RvckNsaWVudDsKIAorI2lmIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgor
ICAgIAogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Zpc2li
bGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0F0dGFjaGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhiOWFiZDcwYmQwZmY2MzM5ZTIyYjM4MzlmZTdlMzFiZGYyNjNmOTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYg
aW5zcGVjdG9yUGFnZSkKKyAgICA6IG1faW5zcGVjdG9yUGFnZShtYWtlV2Vha1B0cihpbnNwZWN0
b3JQYWdlKSkKK3sKK30KKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6
On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSgpCit7CisgICAgaWYgKCFt
X2luc3BlY3RvclBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW5zcGVjdG9yUGFnZSA9
IG51bGxwdHI7CisKKyAgICBhdXRvIGNhbGxiYWNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV9mcm9udGVu
ZExvYWRlZENhbGxiYWNrUXVldWUsIHsgfSk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNh
bGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6d2hlbkZyb250ZW5kSGFzTG9hZGVkKEZ1bmN0aW9uPHZv
aWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9mcm9udGVuZExvYWRlZCAmJiBtX2luc3Bl
Y3RvclBhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlLmFwcGVuZChXVEZNb3ZlKGNhbGxi
YWNrKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6
Omluc3BlY3RvckZyb250ZW5kTG9hZGVkKCkKK3sKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdl
KTsKKworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisgICAgYXV0byBjYWxsYmFja3Mg
PSBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlLCB7IH0pOworICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgICAgIGNhbGxiYWNrKCk7Cit9
CisKKy8vIEFQSQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
OjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Oklu
dmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVnaXN0ZXJFeHRlbnNpb24geyBl
eHRlbnNpb25JRCwgZGlzcGxheU5hbWUgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIH0pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNp
b25JRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgd2hlbkZyb250
ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2Up
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlVu
cmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTc3ODVmM2ZhMTdhZGU0ODJjMjk5
YTVmNjczYzg2ODI5ZjMyYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgK
QEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IGZpbmFsCisgICAgOiBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5KTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpOworICAg
IHZpcnR1YWwgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KCk7CisKKyAg
ICAvLyBBUEkuCisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRl
bnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAg
ICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I+KT4mJik7CisKKyAgICAvLyBOb3RpZmljYXRpb25zLgorICAgIHZvaWQgaW5zcGVj
dG9yRnJvbnRlbmRMb2FkZWQoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHdoZW5Gcm9udGVuZEhh
c0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYpOworCisgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+
IG1faW5zcGVjdG9yUGFnZTsKKyAgICBib29sIG1fZnJvbnRlbmRMb2FkZWQgeyBmYWxzZSB9Owor
CisgICAgLy8gVXNlZCB0byBxdWV1ZSBhY3Rpb25zIHN1Y2ggYXMgcmVnaXN0ZXJpbmcgZXh0ZW5z
aW9ucyB0aGF0IGhhcHBlbiBlYXJseSBvbi4KKyAgICAvLyBUaGVyZSdzIG5vIHBvaW50IHNlbmRp
bmcgdGhlc2UgYmVmb3JlIHRoZSBmcm9udGVuZCBpcyBmdWxseSBsb2FkZWQuCisgICAgVmVjdG9y
PEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0NjY1Y2NiN2JjNmFmN2E3YTA4OTE1ZmRlNDY3MjZkOTY3ZjVmY2I0Li5kODRiMTcw
MDk0YzIwZTA3MGNmODA1YmQyZjI2MTc4ZTYwMmM3NGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MjksOCArMTQyOSwxNSBAQAog
CQk5OTU1QTZGNjFDNzk4NkUzMDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZG
MjFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5jcHAgKi87IH07
CiAJCTk5NTVBNkY3MUM3OTg2RTUwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3Rz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZG
MzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oICovOyB9Owog
CQk5OTc4OEFDQjFGNDIxRERBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTc4OEFDOTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
OTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTc5NjU5QTI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyTWVzc2FnZXMuaCAqLzsgfTsKKwkJOTk3OTY1OUYyNTMxMEE0OTAwQjMxQUUzIC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5NjU5QjI1MzEw
QTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLzsgfTsKKwkJOTk3OTY1QTMyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbkhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25Ib3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTk3OUNBNTgyMzdGNDlGMTAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NzlDQTU3MjM3RjQ5
RjAwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk5OTZBOUYyNTAwNEJDQzAwNEY3NTU5IC8q
IF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTk5NkE5RDI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5z
cGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5OUIxNjc1NzI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OUIxNjc1NDI1MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlCMTY3
NTgyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc1NTI1MkJC
N0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLzsgfTsKKwkJ
OTlCMTY3NUIyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuaCAqLzsgfTsKKwkJOTlCMTY3NjQyNTJCQkU2MjAwNzMxNDBFIC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NjEyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oICovOyB9OwogCQk5OUMzQUUyRDFEQURBNkFEMDBB
RjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzNBRTJDMURBREE2QTcwMEFGNUMxNiAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oICovOyB9OwogCQk5OUM4MUQ1QTFDMjBFN0UyMDA1
QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTlDODFENTUxQzIwREZCRTAwNUM0QzgyIC8qIEF1dG9tYXRpb25D
bGllbnQuaCAqLzsgfTsKIAkJOTlDODFENUQxQzIxRjM4QjAwNUM0QzgyIC8qIEFQSUF1dG9tYXRp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi87IH07
CkBAIC00NTUyLDkgKzQ1NTksMjMgQEAKIAkJOTk1NUE2RjMxQzc5ODY2NDAwRUI2QTkzIC8qIEF1
dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTk5Nzg4QUM5MUY0MjFEQ0EwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9u
U2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5Nzg4QUNBMUY0MjFEQ0EwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lv
bkNvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk5Nzk2NTlBMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5OTc5NjU5
QjI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CisJCTk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lv
bkhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3OUNBNTcyMzdGNDlGMDAw
MzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLSW5zcGVjdG9yUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OTk5NkE5RDI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRl
c3RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yUHJp
dmF0ZUZvclRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk5OTZBOUUy
NTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclRlc3RpbmcubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JUZXN0aW5nLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5OTlCN0VEODI1NTBFNEE4MDBGNDUwQTQgLyogSW5zcGVj
dG9yRXh0ZW5zaW9uVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRXh0ZW5z
aW9uVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc1NDI1MkJC
N0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OUIxNjc1NTI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTlCMTY3NTYyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NUEyNTJCQkFERDAwNzMx
NDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzVEMjUyQkJFMEEw
MDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2
NzYwMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlC
MTY3NjEyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NjIy
NTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QkUz
QjEyMjU0MjJGNDEwMEM2NTUxQyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QkUzQjE2MjU0MzNCOTQwMEM2NTUxQyAvKiBJbnNwZWN0
b3JFeHRlbnNpb25UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25UeXBl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUMzQUUyMzFEQUQ4RTM0MDBBRjVD
MTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTlDM0FFMjYxREFEOTQ4NTAwQUY1QzE2IC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OUMzQUUyQzFEQURBNkE3MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25NYWNy
b3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Np
b25NYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMjUsNiArNjE0Niw4
IEBACiAJCQkJNUMxMjFFODMyNDEwMUY3MDAwNDg2RjlCIC8qIEZyYW1lVHJlZU5vZGVEYXRhLmgg
Ki8sCiAJCQkJMUFDNzVBMUExQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxl
ci5oICovLAogCQkJCUJDQ0Y2QjIzMTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMuaCAq
LywKKwkJCQk5OTlCN0VEODI1NTBFNEE4MDBGNDUwQTQgLyogSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuY3BwICovLAorCQkJCTk5QkUzQjE2MjU0MzNCOTQwMEM2NTUxQyAvKiBJbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5oICovLAogCQkJCTFBOTJEQzEyMTJGOEJBQjkwMDE3QUY2NSAvKiBMYXllclRy
ZWVDb250ZXh0LmNwcCAqLywKIAkJCQkxQTkyREMxMDEyRjhCQTQ2MDAxN0FGNjUgLyogTGF5ZXJU
cmVlQ29udGV4dC5oICovLAogCQkJCTJEMTA4NzVFMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFy
YW1ldGVycy5jcHAgKi8sCkBAIC03MzQwLDYgKzczNjMsMTAgQEAKIAkJCQk5OTFGNDkyRTIzQTgx
MkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0gKi8sCiAJCQkJOTkw
MzZBRTEyM0E5NDlDRTAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJu
YWwuaCAqLywKIAkJCQk5MTk3OTQwQjIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVs
ZWdhdGUuaCAqLywKKwkJCQk5OUIxNjc1NDI1MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmggKi8sCisJCQkJOTlCMTY3NTYyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbi5tbSAqLywKKwkJCQk5OTc5NjVBMjI1MzEyOEM3MDBCMzFBRTMgLyogX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oICovLAorCQkJCTk5QjE2NzU1MjUyQkI3RTEwMDczMTQw
RSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICovLAogCQkJCTVDQUZERTQ0MjEz
MDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oICovLAogCQkJCTk5NzlDQTU3
MjM3RjQ5RjAwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggKi8sCiAJCQkJOTk5OTZB
OUQyNTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggKi8s
CkBAIC04NjQ4LDYgKzg2NzUsOCBAQAogCQkJCTFDOEUyODMzMTI3NUQ3MzgwMEJDN0JEMCAvKiBX
ZWJJbnNwZWN0b3JQcm94eS5jcHAgKi8sCiAJCQkJMUM4RTI4MzIxMjc1RDczODAwQkM3QkQwIC8q
IFdlYkluc3BlY3RvclByb3h5LmggKi8sCiAJCQkJMUM3N0MxOTUxMjg4QTg3MjAwNkE3NDJGIC8q
IFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJCTk5QjE2NzVEMjUyQkJFMEEw
MDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgKi8s
CisJCQkJOTlCMTY3NUEyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmggKi8sCiAJCQkJQTU1QkE4MjcxQkEzOEUxRTAwN0NEMzNEIC8qIFdl
Ykluc3BlY3RvclV0aWxpdGllcy5jcHAgKi8sCiAJCQkJQTU1QkE4MjgxQkEzOEUxRTAwN0NEMzNE
IC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5oICovLAogCQkJCUE1RUM2QUQyMjE1MUJENjkwMDY3
N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8sCkBAIC04NzEwLDYgKzg3MzksOSBAQAog
CQkJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5jcHAgKi8sCiAJ
CQkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggKi8sCiAJCQkJ
MUM4OTFENjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluICov
LAorCQkJCTk5QjE2NzYwMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuY3BwICovLAorCQkJCTk5QjE2NzYxMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCAqLywKKwkJCQk5OUIxNjc2MjI1MkJCRTYx
MDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmlu
ICovLAogCQkJCUE1NDNFMzBBMjE1QzhBODQwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFy
Z2V0LmNwcCAqLywKIAkJCQlBNTQzRTMwODIxNUM4QTgzMDAyNzlDRDkgLyogV2ViUGFnZUluc3Bl
Y3RvclRhcmdldC5oICovLAogCQkJCUE1NDNFMzA5MjE1QzhBODMwMDI3OUNEOSAvKiBXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5jcHAgKi8sCkBAIC05MzI4LDYgKzkzNjAsNyBAQAog
CQkJCTkxOTc5NDA5MjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCAqLywK
IAkJCQk5OTRDNjA0ODI1M0Y4MjAyMDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5jcHAgKi8sCiAJCQkJOTk0QzYwNDYyNTNDQUNCODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNv
bmZpZ3VyYXRpb24uaCAqLywKKwkJCQk5OUJFM0IxMjI1NDIyRjQxMDBDNjU1MUMgLyogQVBJSW5z
cGVjdG9yRXh0ZW5zaW9uLmggKi8sCiAJCQkJMzFCMzYyOTAyMTQxRUFCQzAwN0JGQTUzIC8qIEFQ
SUludGVybmFsRGVidWdGZWF0dXJlLmNwcCAqLywKIAkJCQkzMUIzNjI4RTIxNDFFQTREMDA3QkZB
NTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3
MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCAqLywKQEAgLTEwMzU1
LDYgKzEwMzg4LDggQEAKIAkJCQkxQzhFMkEzMjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVj
dG9yTWVzc2FnZXMuaCAqLywKIAkJCQkxQ0E4Qjk0MzEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDQThCOTQ0MTI3Qzg4MkEw
MDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJOTk3OTY1OUIy
NTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTk3OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUNCQkU0OUUx
OUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
IAkJCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5o
ICovLAogCQkJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTA3NjcsNiArMTA4MDIsOSBAQAogCQkJCTk5MUY0OTJG
MjNBODEyQzYwMDU0NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTkwMzZBRTIyM0E5NDlDRjAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVn
Z2FibGVJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDBDMjNEQkM1MDMw
MDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlC
MTY3NTcyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJOTk3OTY1QTMyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QjE2NzU4MjUyQkI3RTEwMDczMTQwRSAv
KiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNB
RkRFNDcyMTMwODQ2QTAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OTc5Q0E1ODIzN0Y0OUYxMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk5OTZBOUYyNTAwNEJDQzAwNEY3NTU5IC8qIF9XS0lu
c3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTExNTAwLDYgKzEx
NTM4LDkgQEAKIAkJCQkxQzhFMjgzNDEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJ
bnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzg5MUQ2NjE5QjEy
NEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QjE2
NzY0MjUyQkJFNjIwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk5Nzk2NTlFMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTlCMTY3NUIyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0JCRTRBMTE5QjY2QzUzMDA2QjdEODEg
LyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1QkE4MkIx
QkEzOEU2MTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkRBOTQ0QTAxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMzMxNCw2ICsxMzM1NSw3IEBACiAJCQkJRkVEQkRDRDYxRTY4RDIw
MDAwQTU5RjhGIC8qIFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTJBMzUxMjc3ODUyNDAwQkM3QkQwIC8qIFdl
Ykluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4Qjk0
NTEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJOTk3OTY1OUYyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3OEEyMTJCNkFCMTAwRjQ5M0ZE
IC8qIFdlYktleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2MjgwRjMxOTE5
OTgyQTAwNkFEOUY5IC8qIFdlYktpdC5tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUku
Y3BwCmluZGV4IDY3NzFjNmYwZGU2MzFmY2MxNDJlZjYwODZmZTBhYWJlNzRjN2Y2NTMuLmQxMzkw
YmZkNmY2YmUyMzE1NjY3YzA0ZmQ2YmVjM2Q2YWMxNTUyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUku
Y3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJv
bGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KIAorI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIuaCIKKyNlbmRpZgorCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykg
JiYgIVBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAj
ZW5kaWYKQEAgLTU4LDggKzYyLDE0IEBAIFJlbW90ZVdlYkluc3BlY3RvclVJOjpSZW1vdGVXZWJJ
bnNwZWN0b3JVSShXZWJQYWdlJiBwYWdlKQogICAgIFdlYkluc3BlY3RvclVJOjplbmFibGVGcm9u
dGVuZEZlYXR1cmVzKCk7CiB9CiAKK1JlbW90ZVdlYkluc3BlY3RvclVJOjp+UmVtb3RlV2ViSW5z
cGVjdG9yVUkoKSA9IGRlZmF1bHQ7CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmluaXRp
YWxpemUoRGVidWdnYWJsZUluZm9EYXRhJiYgZGVidWdnYWJsZUluZm8sIGNvbnN0IFN0cmluZyYg
YmFja2VuZENvbW1hbmRzVVJMKQogeworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
KyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcj4oKnRoaXMpOworI2VuZGlmCisKICAgICBtX2RlYnVnZ2FibGVJbmZv
ID0gV1RGTW92ZShkZWJ1Z2dhYmxlSW5mbyk7CiAgICAgbV9iYWNrZW5kQ29tbWFuZHNVUkwgPSBi
YWNrZW5kQ29tbWFuZHNVUkw7CiAKQEAgLTEwOSw2ICsxMTksOCBAQCB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclVJOjpmcm9udGVuZExvYWRlZCgpCiAKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hl
ci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJzZXRJc1Zpc2libGUiX3MsIHsgSlNP
Tjo6VmFsdWU6OmNyZWF0ZSh0cnVlKSB9KTsKIAorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5OjpGcm9udGVuZExvYWRlZCgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKKwogICAg
IGJyaW5nVG9Gcm9udCgpOwogfQogCkBAIC0xNzQsNiArMTg2LDEwIEBAIHZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKIHsKICAgICBtX3BhZ2UuY29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG51bGxwdHIpOwog
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJv
bGxlciA9IG51bGxwdHI7CisjZW5kaWYKKyAgICAKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6RnJvbnRlbmREaWRDbG9zZSgpLCBtX3BhZ2UuaWRlbnRpZmllcigpKTsKIH0K
IApAQCAtMjU4LDYgKzI3NCwxMiBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzZXREaWFn
bm9zdGljTG9nZ2luZ0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkKIH0KICNlbmRpZgogCitXZWJD
b3JlOjpQYWdlKiBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRQYWdlKCkKK3sKKyAgICBy
ZXR1cm4gbV9wYWdlLmNvcmVQYWdlKCk7Cit9CisKKwogI2lmICFQTEFURk9STShNQUMpICYmICFQ
TEFURk9STShHVEspICYmICFQTEFURk9STShXSU4pCiBTdHJpbmcgUmVtb3RlV2ViSW5zcGVjdG9y
VUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCmluZGV4
IDAyNWVjOTBhMWQ0YWYxYzlmNTUzZGJjNDJmN2M5MzlmZDQzOTg0OTMuLmI4ZGE5YTlmOGE1YTc2
NmQxMzYxMjI2YWYwYzRlODU2MTY1NmIzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgKQEAgLTM5LDEx
ICszOSwxNiBAQCBjbGFzcyBGbG9hdFJlY3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFz
cyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI7CiBjbGFzcyBXZWJQYWdlOwogCi1j
bGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JVSSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlbW90
ZVdlYkluc3BlY3RvclVJPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgeworY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9y
VUkgZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJlbW90ZVdlYkluc3BlY3RvclVJPgor
ICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3Rl
V2ViSW5zcGVjdG9yVUk+IGNyZWF0ZShXZWJQYWdlJik7CisgICAgflJlbW90ZVdlYkluc3BlY3Rv
clVJKCk7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgUmVtb3RlV2ViSW5zcGVj
dG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKQEAgLTk3LDYgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNob3dDZXJ0aWZpY2F0ZShjb25zdCBXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8mKSBvdmVycmlkZTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcm9u
dGVuZEFQSURpc3BhdGNoZXI7IH0KKyAgICBXZWJDb3JlOjpQYWdlKiBmcm9udGVuZFBhZ2UoKSBm
aW5hbDsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfVEVMRU1FVFJZKQogICAgIGJvb2wgc3VwcG9y
dHNEaWFnbm9zdGljTG9nZ2luZygpIG92ZXJyaWRlOwpAQCAtMTE3LDYgKzEyMywxMCBAQCBwcml2
YXRlOgogICAgIFdlYlBhZ2UmIG1fcGFnZTsKICAgICBSZWY8V2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyPiBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0PiBtX2Zyb250ZW5kSG9zdDsKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcj4gbV9leHRlbnNpb25Db250cm9sbGVyOworI2VuZGlmCisK
ICAgICBEZWJ1Z2dhYmxlSW5mb0RhdGEgbV9kZWJ1Z2dhYmxlSW5mbzsKICAgICBTdHJpbmcgbV9i
YWNrZW5kQ29tbWFuZHNVUkw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggODI4MDlhZGI2ZGVlNmE1NWJiOTUy
Njc4MzUxMzhhYzIzNjc5NWU1ZC4uYzJkODgzNmFjMjIwMDkxYTVjZWY1YzY3YzI2N2VlMjgwZDI3
YTUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTM2LDEwICszNiwxNSBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RE9NV3JhcHBlcldvcmxkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNjUs
NiArNzAsOCBAQCBXZWJJbnNwZWN0b3JVSTo6V2ViSW5zcGVjdG9yVUkoV2ViUGFnZSYgcGFnZSkK
ICAgICBXZWJJbnNwZWN0b3JVSTo6ZW5hYmxlRnJvbnRlbmRGZWF0dXJlcygpOwogfQogCitXZWJJ
bnNwZWN0b3JVSTo6fldlYkluc3BlY3RvclVJKCkgPSBkZWZhdWx0OworCiB2b2lkIFdlYkluc3Bl
Y3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaW5zcGVj
dGVkUGFnZUlkZW50aWZpZXIsIGNvbnN0IERlYnVnZ2FibGVJbmZvRGF0YSYgZGVidWdnYWJsZUlu
Zm8sIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiB7CiAgICAgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwpAQCAtNzIs
OCArNzksMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGUKICAgICBtX3VuZGVyVGVzdCA9IHVu
ZGVyVGVzdDsKICAgICBtX2luc3BlY3Rpb25MZXZlbCA9IGluc3BlY3Rpb25MZXZlbDsKIAotICAg
IG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5yZXNldCgpOworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcj4oKnRoaXMpOworI2VuZGlmCiAKKyAgICBtX2Zy
b250ZW5kQVBJRGlzcGF0Y2hlci0+cmVzZXQoKTsKICAgICBtX2Zyb250ZW5kQ29udHJvbGxlciA9
ICZtX3BhZ2UuY29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwogICAgIG1fZnJvbnRl
bmRDb250cm9sbGVyLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudCh0aGlzKTsKIApAQCAtMTY1
LDYgKzE3NSwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCiAKICAgICBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7
CisgICAgCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9u
Q29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6
cmVvcGVuKCkKQEAgLTQxMiw2ICs0MjYsMTIgQEAgU3RyaW5nIFdlYkluc3BlY3RvclVJOjp0YXJn
ZXRQcm9kdWN0VmVyc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVidWdnYWJsZUluZm8udGFy
Z2V0UHJvZHVjdFZlcnNpb247CiB9CiAKK1dlYkNvcmU6OlBhZ2UqIFdlYkluc3BlY3RvclVJOjpm
cm9udGVuZFBhZ2UoKQoreworICAgIHJldHVybiBtX3BhZ2UuY29yZVBhZ2UoKTsKK30KKworCiAj
aWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKFdJTikKIGJv
b2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCmluZGV4IGE2ZWU3MTMzOTM5ZWYy
YTA0YjZiODYyYjI4ZTgyMTdmZTIwZGIxZWUuLjI0YzFhYjQ2OWU4MGQ1YjM3N2IwNjA5ZjcwNWZk
ZTZmZTBlOWQyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLmgKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSW5zcGVjdG9yRGVidWdnYWJsZVR5cGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rv
ckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9zdC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOworY2xh
c3MgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xhc3Mg
RmxvYXRSZWN0OwogfQpAQCAtNDIsMTAgKzQyLDE3IEBAIGNsYXNzIEZsb2F0UmVjdDsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRp
ZgogCi1jbGFzcyBXZWJJbnNwZWN0b3JVSSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkluc3BlY3Rv
clVJPiwgcHJpdmF0ZSBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVibGljIFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvclVJIGZpbmFsCisgICAg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJJbnNwZWN0b3JVST4KKyAgICAsIHByaXZhdGUgSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJJbnNwZWN0b3JVST4gY3JlYXRl
KFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JVSSgpOwogCiAgICAgc3RhdGlj
IHZvaWQgZW5hYmxlRnJvbnRlbmRGZWF0dXJlcygpOwogCkBAIC0xNDMsNyArMTUwLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXImIGZyb250
ZW5kQVBJRGlzcGF0Y2hlcigpIGZpbmFsIHsgcmV0dXJuIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVy
OyB9Ci0KKyAgICBXZWJDb3JlOjpQYWdlKiBmcm9udGVuZFBhZ2UoKSBmaW5hbDsKKyAgICAgICAg
CiAgICAgdm9pZCBwYWdlUGF1c2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWdlVW5wYXVzZWQo
KSBvdmVycmlkZTsKIApAQCAtMTYwLDYgKzE2OCwxMCBAQCBwcml2YXRlOgogICAgIC8vIGNvcmVQ
YWdlKCksIHNpbmNlIHdlIG1heSBuZWVkIGl0IGFmdGVyIHRoZSBmcm9udGVuZCdzIHBhZ2UgaGFz
IHN0YXJ0ZWQgZGVzdHJ1Y3Rpb24uCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciog
bV9mcm9udGVuZENvbnRyb2xsZXIgeyBudWxscHRyIH07CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcj4gbV9leHRlbnNpb25Db250cm9sbGVyOworI2VuZGlmCisKICAgICBXZWJQYWdl
UHJveHlJZGVudGlmaWVyIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CiAgICAgYm9vbCBtX3Vu
ZGVyVGVzdCB7IGZhbHNlIH07CiAgICAgRGVidWdnYWJsZUluZm9EYXRhIG1fZGVidWdnYWJsZUlu
Zm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTRmZTE0ZjdjMDk1ZWI3YjJiZTU3ZTM0OGZmZGM5ZGExYzAxNGQ3YQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2luY2x1
ZGUgIldlYkluc3BlY3RvclVJLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElE
aXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCYgaW5zcGVjdG9yRnJvbnRlbmQpCisgICAgOiBtX2lu
c3BlY3RvckZyb250ZW5kKG1ha2VXZWFrUHRyKGluc3BlY3RvckZyb250ZW5kKSkKK3sKKyAgICBQ
YWdlKiBwYWdlID0gaW5zcGVjdG9yRnJvbnRlbmQuZnJvbnRlbmRQYWdlKCk7CisgICAgQVNTRVJU
KHBhZ2UpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCpwYWdlKS5pZGVudGlmaWVyKCksICp0
aGlzKTsKK30KKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpwYXJzZUlu
c3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbVJlc3VsdChKU0M6OkpTVmFsdWUgcmVzdWx0KQorewor
ICAgIEFTU0VSVChtX2luc3BlY3RvckZyb250ZW5kKTsKKyAgICBhdXRvIGdsb2JhbE9iamVjdCA9
IG1faW5zcGVjdG9yRnJvbnRlbmQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmZyb250ZW5kR2xv
YmFsT2JqZWN0KCk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybiBJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDsKKworICAgIGlmIChyZXN1bHQu
aXNTdHJpbmcoKSkgeworICAgICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1dURlN0
cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJJbnRlcm5h
bEVycm9yIikKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50
ZXJuYWxFcnJvcjsKKyAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW52YWxpZFJlcXVlc3Qi
KQorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVx
dWVzdDsKKyAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW52YWxpZFN0YXRlIikKKyAgICAg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFN0YXRlOworICAg
ICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJSZWdpc3RyYXRpb25GYWlsZWQiKQorICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQ7Cisg
ICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIlJlc291cmNlTG9hZEZhaWxlZCIpCisgICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OlJlc291cmNlTG9hZEZhaWxlZDsK
KworICAgICAgICAvLyBJZiB0aGUgZXZhbHVhdGlvbiByZXN1bHQgaXMgYSBzdHJpbmcsIHRoZSBm
cm9udGVuZCByZXR1cm5lZCBhbiBlcnJvciBzdHJpbmcuCisgICAgICAgIC8vIEFueXRoaW5nIGVs
c2UgKGZhbHN5IHZhbHVlcywgb2JqZWN0cywgYXJyYXlzLCBET00sIGV0Yy4pIGlzIGludGVycHJl
dGVkIGFzIHN1Y2Nlc3MuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CisgICAgfQorCisg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyIElQQyBtZXNzYWdlcy4KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAoIW1faW5zcGVjdG9yRnJvbnRlbmQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVl
Pj4gYXJndW1lbnRzIHsKKyAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25JRCks
CisgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZGlzcGxheU5hbWUpLAorICAgIH07CisgICAg
bV9pbnNwZWN0b3JGcm9udGVuZC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21t
YW5kV2l0aFJlc3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1bWVu
dHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
OjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhcmVzdWx0KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkRXJy
b3IgPSB3ZWFrVGhpcy0+cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21SZXN1bHQocmVz
dWx0LnZhbHVlKCkpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChwYXJzZWRFcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICB9KTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3Rl
ZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZCkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVl
c3QpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxSZWY8SlNPTjo6VmFs
dWU+PiBhcmd1bWVudHMgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKGV4dGVuc2lvbklEKSB9OworICAg
IG1faW5zcGVjdG9yRnJvbnRlbmQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29t
bWFuZFdpdGhSZXN1bHRBc3luYygidW5yZWdpc3RlckV4dGVuc2lvbiJfcywgV1RGTW92ZShhcmd1
bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRj
aGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhcmVzdWx0KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGF1dG8gcGFyc2Vk
RXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21SZXN1bHQo
cmVzdWx0LnZhbHVlKCkpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChwYXJzZWRFcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICB9KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43YTE5ZDI2ZTczNDZjNmM3YjQyOWUxNzNiM2IwMThhMTNhODQ4YzU4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKyNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NK
U1ZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnNwZWN0b3JVSTsKKworY2xhc3Mg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyCisgICAgOiBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIpOwor
cHVibGljOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCYpOworICAgIH5XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIoKTsKKworICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKKworICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMg
bWVzc2FnZXMuCisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOworICAgIHZvaWQg
dW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYp
OworCitwcml2YXRlOgorICAgIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBwYXJz
ZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbVJlc3VsdChKU0M6OkpTVmFsdWUgcmVzdWx0KTsK
KworICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IG1faW5zcGVj
dG9yRnJvbnRlbmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM3OGVkNzVjY2Mz
YTk3NmVmZTc2MGNjYmY4ZDhjNjEwNDU0NjVjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworbWVz
c2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIE5vdFJlZkNvdW50ZWQg
eworICAgIFJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5nIGRpc3Bs
YXlOYW1lKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJv
cj4gcmVzdWx0KSBBc3luYworICAgIFVucmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4dGVuc2lv
bklEKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4g
cmVzdWx0KSBBc3luYworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYy
OWIyZjc2YzBiMzJhMzllNmUwOGVlYjA2NDg3MmYxYjNhM2NlOGIuLmEzYmYxMTcxYjUxNDRlMmZh
MWNmZjZlNzFiYjhiZjYzNTQxODhmZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMS0wMyAgQnJpYW4gQnVy
ZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEluc3BlY3RvciBFeHRlbnNp
b25zOiBBZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFuZCByZWxhdGVkIHBsdW1iaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3ODMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY5OTY4Nzg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgbmV3IG1ldGhv
ZHMgb2YgdGhlIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgcHJvdG9jb2wuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
TmV3IHRlc3QgZmlsZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbTogQWRkZWQuCisgICAgICAgIChyZXNldEdsb2Jh
bFN0YXRlKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNp
b25Ib3N0IF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOl0pOgorICAgICAgICAoVEVT
VCk6CisKIDIwMjAtMTEtMDMgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgdGVzdCBmb3IgY2FjaGVNb2RlbEZvck1haW5CdW5kbGUoKSBpbiBXZWJLaXRM
ZWdhY3kKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWI1MDg5MzY3NDNjZDEwMDI1M2IwNWE0
MTNiMWQ2YWE1OTdiNzIyOC4uNjI3YjNlMTAzMDg0ZDgxYzc1Zjc5OGZiMTc4OGFkOGE5NmUyZTUy
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzNSw2ICs4MzUsNyBAQAogCQk5OTg0RkFD
QzFDRkZBRjYwMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThD
IC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAwOEQx
OThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFi
bGUtYm9keS5odG1sICovOyB9OwogCQk5OTk5MTA4QjFGMzkzQzk2MDA4QUQ0NTUgLyogQ29weWlu
Zy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5OTkx
MDhBMUYzOTNDOEIwMDhBRDQ1NSAvKiBDb3B5aW5nLm1tICovOyB9OworCQk5OTlCN0VFMzI1NTFD
NjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk5QjdFRTIyNTUxQzYzQjAwRjQ1MEE0
IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSAqLzsgfTsKIAkJOTlCNEY5QzYyNEVERUQ5
NzAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJ
bnNwZWN0b3JEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJOUIwMkUwRDYyMzVGQTQ3RDAwNDA0NEIyIC8q
IFRleHRNYW5pcHVsYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjAyRTBENTIzNUZBNDdEMDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5t
bSAqLzsgfTsKIAkJOUIwNzg2QTUxQzU4ODVDMzAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFr
ZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwNzg2QTQxQzU4ODVDMzAwRDE1OUUzIC8qIEluamVjdGVk
QnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwICovOyB9OwpAQCAtMjQ0Niw2
ICsyNDQ3LDcgQEAKIAkJOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJ
bnB1dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmll
d1RleHRJbnB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk4NEZBQ0QxQ0ZG
QjAzODAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJlZGl0YWJsZS1ib2R5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29weWluZy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcHlpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVuc2lv
bkhvc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3Bl
Y3RvckV4dGVuc2lvbkhvc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QjRG
OUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwMkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRl
eHRNYW5pcHVsYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0TWFuaXB1bGF0aW9u
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjA3ODZBMjFDNTg4MzBGMDBEMTU5
RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jv
b3RzT3Blbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDA5LDYgKzM0MTEs
NyBAQAogCQkJCTM3MENFMjI5MUY1NzM0MzQwMEU3NDEwQiAvKiBXS0NvbnRlbnRWaWV3VGFyZ2V0
Rm9yQWN0aW9uLm1tICovLAogCQkJCTUxRDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBD
b29raWVTdG9yZS5tbSAqLywKIAkJCQk5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNw
ZWN0b3JEZWxlZ2F0ZS5tbSAqLywKKwkJCQk5OTlCN0VFMjI1NTFDNjNCMDBGNDUwQTQgLyogV0tJ
bnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tICovLAogCQkJCUE1QTcyOUYwMUY2MjJBOUEwMERFNUEy
OCAvKiBXS05hdmlnYXRpb25SZXNwb25zZS5tbSAqLywKIAkJCQlERjRCMjczODIxQTQ3NzI3MDA5
QkQxQ0EgLyogV0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLywKIAkJCQkz
NzVFMEUxNTFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSAqLywKQEAgLTUwMjAsNiAr
NTAyMyw3IEBACiAJCQkJRTNGOEFCOTIyNDFBQjlDRTAwM0UyQTdFIC8qIEFjY2Vzc2liaWxpdHlS
ZW1vdGVVSUFwcC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFMjA1QkE0MUY1Mjc3NDYwMDU5NTJE
RCAvKiBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QkQ1MTEx
QzFGRThFMTE2MDBEMkI2MzAgLyogQWNjZXNzaW5nUGFzdGVkSW1hZ2UubW0gaW4gU291cmNlcyAq
LywKKwkJCQk5OTlCN0VFMzI1NTFDNjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25I
b3N0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1QjYzRkUxRjE5RDQxMDAwOUQzOEI5IC8qIEFj
dGlvblNoZWV0VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk2QjBBMDdGNzIxRkE5QzJCMDBE
NTczOTEgLyogQWRDbGlja0F0dHJpYnV0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3RTdE
RDY0MUVBMDZGRjIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzLm1t
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVlZGFjZDc5Y2RhZDc3OGY5MzRhMDljZDg5NDUwNGRlZGFkY2E2NjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSG9zdC5tbQpAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJVdGlsaXRpZXMuaCIKKyNp
bXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3IuaD4KKyNpbXBv
cnQgPFdlYktpdC9fV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCitzdGF0
aWMgYm9vbCBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworc3RhdGljIGJv
b2wgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkIHJlc2V0
R2xvYmFsU3RhdGUoKQoreworICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFs
c2U7CisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7Cit9CisKK0BpbnRlcmZh
Y2UgVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IDogTlNPYmplY3Qg
PFdLVUlEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFVJRGVsZWdhdGVGb3JUZXN0
aW5nSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdAorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0
b3IKK3sKKyAgICBFWFBFQ1RfRVEod2ViVmlldy5faW5zcGVjdG9yLCBpbnNwZWN0b3IpOworICAg
IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKK30KKworQGVuZAorCitURVNU
KFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCwgUmVnaXN0ZXJFeHRlbnNpb24pCit7CisgICAgcmVz
ZXRHbG9iYWxTdGF0ZSgpOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgd2ViVmlld0NvbmZpZ3VyYXRp
b24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbVUlEZWxlZ2F0ZUZv
clRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IG5ld10pOworCisgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpAIjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90aXRsZT48L2hlYWQ+
PGJvZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07CisKKyAgICBbW3dlYlZpZXcgX2luc3Bl
Y3Rvcl0gc2hvd107CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2Nh
bEluc3BlY3RvckNhbGxlZCk7CisKKyAgICBhdXRvIGZpcnN0SUQgPSBbTlNVVUlEIFVVSURdLlVV
SURTdHJpbmc7CisgICAgYXV0byBzZWNvbmRJRCA9IFtOU1VVSUQgVVVJRF0uVVVJRFN0cmluZzsK
KworICAgIC8vIE5vcm1hbCByZWdpc3RyYXRpb24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2Fs
bGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9u
V2l0aElEOmZpcnN0SUQgZGlzcGxheU5hbWU6QCJGaXJzdEV4dGVuc2lvbiIgY29tcGxldGlvbkhh
bmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24g
KiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAg
ICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisKKyAgICAvLyBEb3VibGUgcmVnaXN0cmF0
aW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmll
dyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGRpc3BsYXlOYW1l
OkAiRmlyc3RFeHRlbnNpb24iIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJs
ZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgewor
ICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTlVMTChleHRl
bnNpb24pOworICAgICAgICBFWFBFQ1RfVFJVRShbZXJyb3IubG9jYWxpemVkRmFpbHVyZVJlYXNv
biBjb250YWluc1N0cmluZzpAIlJlZ2lzdHJhdGlvbkZhaWxlZCJdKTsKKworICAgICAgICBwZW5k
aW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIC8vIFR3byByZWdp
c3RyYXRpb25zLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtb
d2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpzZWNvbmRJRCBkaXNw
bGF5TmFtZTpAIlNlY29uZEV4dGVuc2lvbiIgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICog
X051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUgZXh0ZW5z
aW9uKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9O
VUxMKGV4dGVuc2lvbik7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFj
a1dhc0NhbGxlZCk7Cit9CisKK1RFU1QoV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LCBVbnJlZ2lz
dGVyRXh0ZW5zaW9uKQoreworICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsKKworICAgIGF1dG8gd2Vi
Vmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10p
OworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJF
eHRyYXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdWlEZWxlZ2F0
ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBu
ZXddKTsKKworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07Cisg
ICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8aGVhZD48dGl0bGU+VGVzdCBwYWdlIHRvIGJl
IGluc3BlY3RlZDwvdGl0bGU+PC9oZWFkPjxib2R5PjxwPkZpbGxlciBjb250ZW50PC9wPjwvYm9k
eT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vIl1d
OworCisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQpOworCisgICAgYXV0byBm
aXJzdElEID0gW05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nOworICAgIF9fYmxvY2sgUmV0YWluUHRy
PF9XS0luc3BlY3RvckV4dGVuc2lvbj4gZm91bmRFeHRlbnNpb247CisKKyAgICAvLyBVbnJlZ2lz
dGVyIGEga25vd24gZXh0ZW5zaW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZh
bHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpm
aXJzdElEIGRpc3BsYXlOYW1lOkAiRmlyc3RFeHRlbnNpb24iIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxh
YmxlIGV4dGVuc2lvbikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVY
UEVDVF9OT1RfTlVMTChleHRlbnNpb24pOworICAgICAgICBmb3VuZEV4dGVuc2lvbiA9IGV4dGVu
c2lvbjsKKworICAgICAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gdW5yZWdpc3RlckV4dGVuc2lv
bjpmb3VuZEV4dGVuc2lvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVs
bGFibGUgZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKworICAgICAg
ICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxs
ZWQpOworICAgIEVYUEVDVF9OT1RfTlVMTChmb3VuZEV4dGVuc2lvbi5nZXQoKSk7CisKKyAgICAv
LyBSZS1yZWdpc3RlciBhbiBleHRlbnNpb24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVk
ID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0
aElEOmZpcnN0SUQgZGlzcGxheU5hbWU6QCJGaXJzdEV4dGVuc2lvbiIgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBf
TnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAg
ICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7CisgICAgICAgIGZvdW5kRXh0ZW5zaW9uID0g
ZXh0ZW5zaW9uOworCisgICAgICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSB1bnJlZ2lzdGVyRXh0
ZW5zaW9uOmZvdW5kRXh0ZW5zaW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAq
IF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworCisg
ICAgICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgICAgICB9XTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dh
c0NhbGxlZCk7CisgICAgRVhQRUNUX05PVF9OVUxMKGZvdW5kRXh0ZW5zaW9uLmdldCgpKTsKKwor
ICAgIC8vIFVucmVnaXN0ZXIgYW4gZXh0ZW5zaW9uIHR3aWNlLgorICAgIHBlbmRpbmdDYWxsYmFj
a1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSB1bnJlZ2lzdGVy
RXh0ZW5zaW9uOmZvdW5kRXh0ZW5zaW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJv
ciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShbZXJyb3IubG9jYWxpemVkRmFpbHVyZVJlYXNvbiBjb250YWlu
c1N0cmluZzpAIkludmFsaWRSZXF1ZXN0Il0pOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dh
c0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZw
ZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413162</attachid>
            <date>2020-11-04 07:49:01 -0800</date>
            <delta_ts>2020-11-04 09:35:20 -0800</delta_ts>
            <desc>Patch v2.1</desc>
            <filename>bug-217783-20201104074900.patch</filename>
            <type>text/plain</type>
            <size>117390</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRmNGU3MWQ2ODFlMmZj
MDFhY2FiNDZkMTk1MmE4ZjJiNGJlYzk3Ny4uZTFiYjczYzQ4Nzk5MzhlYmMyNDU4M2NmNTg1ZDY3
Nzk4Y2Q3OTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTExLTAzICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4
dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5oOgorICAgICAgICBJbiBvcmRlciBmb3IgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyIHRvIHdvcmsgd2l0aCByZW1vdGUgYW5kIGxvY2FsCisgICAgICAgIGluc3BlY3RvcnMsIGl0
IHN0b3JlcyBhIHdlYWsgcG9pbnRlciB0aGUgaW5zcGVjdG9yJ3MgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuCisgICAgICAgIEV4cG9zZSB0aGUgZnJvbnRlbmQncyBwYWdlIHNvIHRoYXQgdGhlIGZy
b250ZW5kIEFQSSBkaXNwYXRjaGVyIGNhbiBkaXNwYXRjaCB0byBpdC4KKwogMjAyMC0xMS0wMyAg
QW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBhbGlnbi1jb250
ZW50IHNob3VsZCBiZSBhIGRpc2NyZXRlIGFuaW1hdGFibGUgcHJvcGVydHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCmluZGV4IDQxODAwMGQxNGI2MDZmZTA4OTQzOTlkNDJkYTM0ZTU3YzMwYzI1ZmQu
LjVmZjU3Nzc2ZjkyN2M2YWQ4M2Q5ZTg3NDhjOGI4ZmNiNWEyYjQzZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEwLTIyICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4dGVuc2lvbnM6IEFk
ZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDogQWRkIG5ldyBmaWxlcy4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2Uu
anM6CisgICAgICAgIChXSS5BcHBDb250cm9sbGVyQmFzZSk6CisgICAgICAgIChXSS5BcHBDb250
cm9sbGVyQmFzZS5wcm90b3R5cGUuZ2V0IGV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICBI
YW5nIHRoZSBleHRlbnNpb24gY29udHJvbGxlciBvZmYgb2YgdGhlIGdsb2JhbCBzaW5nbGV0b24s
IGFzIHRoZXJlIGNhbiBvbmx5IGJlIG9uZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUucmVnaXN0ZXJFeHRlbnNpb24pOgorICAg
ICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUudW5yZWdp
c3RlckV4dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3Igbm93LCBqdXN0IGtlZXAgdGhlIFVV
SURzIGluIGEgbWFwIGFuZCBsb2cgdGhlIHJlc3VsdC4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qczoKKyAgICAgICAgKFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24ucHJvdG90
eXBlLmdldCBleHRlbnNpb25JRCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24u
cHJvdG90eXBlLmdldCBkaXNwbGF5TmFtZSk6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIGEgZGF0
YSBvYmplY3QgZm9yIG5vdy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yRnJvbnRlbmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2Fk
Q29tcGxldGVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnJlZ2lzdGVyRXh0ZW5z
aW9uKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnVucmVnaXN0ZXJFeHRlbnNpb24p
OgorICAgICAgICBBZGRlZC4gRm9yd2FyZCBpbnZvY2F0aW9ucyB0byB0aGUgZXh0ZW5zaW9uIGNv
bnRyb2xsZXIuCisKIDIwMjAtMTAtMzAgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0cmEgY2xvc2luZyBwYXJlbnRoZXNp
cyBhZGRlZCBhZnRlciB2YXIgaW4gc3R5bGVzIHBhbmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYzODhiOWMzYTJh
ZGE3MTk4MDJhOTEyN2Y1YTYwNWE1OWY5OGEwODIuLmU1OGRiMjZjNzU4NjExOTFjNDM4N2YxZTlh
NzU1Y2M1NjZmZDM5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3IEBACisyMDIwLTEwLTIyICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9y
IEV4dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGlzIG5l
dyBTUEkgdGhhdCByZXByZXNlbnRzIGEgV2ViIEV4dGVuc2lvbiB0aGF0IHVzZXMgdGhlICdkZXZ0
b29scycKKyAgICAgICAgQVBJIHRvIGludGVyYWN0IHdpdGggV2ViIEluc3BlY3Rvci4gQW4gZXh0
ZW5zaW9uIGlzIGFzc29jaWF0ZWQgd2l0aCBpdHMgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC4K
KyAgICAgICAgQSBXZWJLaXQgY2xpZW50IHRoYXQgc3VwcG9ydHMgV2ViIEV4dGVuc2lvbnMgY2Fu
IHVzZSB0aGlzIGNsYXNzIHRvIGltcGxlbWVudCAnZGV2dG9vbHMnIGV4dGVuc2lvbiBBUElzLgor
CisgICAgICAgIEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IG1ldGhvZHMgdG8gcmVnaXN0
ZXIgYW5kIHVucmVnaXN0ZXIgYW4gZXh0ZW5zaW9uLgorICAgICAgICBBZGQgcGx1bWJpbmcgc28g
dGhhdCB0aGUgZXh0ZW5zaW9uIGluIHJlZ2lzdGVyZWQgaW4gdGhlIGZyb250ZW5kIHdpdGggV0ku
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci4KKworICAgICAgICBMYXRlciBwYXRjaGVzIHdp
bGwgZmxlc2ggb3V0IHRoZSBuZWVkZWQgZnVuY3Rpb25hbGl0eSB0byBpbXBsZW1lbnQgcmVzdCBv
ZiB0aGUgJ2RldnRvb2xzJyBBUEkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5OiBJZiBhIG1lc3NhZ2UgaW5jbHVkZXMgSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3IsCisgICAgICAgIHRoZW4gZ2VuZXJhdGUgYW4gaW5jbHVkZSBmb3IgSW5zcGVj
dG9yRXh0ZW5zaW9uVHlwZXMuaCB3aGVyZSBpdCBpcyBkZWNsYXJlZC4KKworICAgICAgICAqIFNo
YXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICBOZXcgQVBJIG9i
amVjdCB0eXBlLgorCisgICAgICAgICogU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmg6
IEFkZGVkIGVycm9yIGNvZGUgZW51bSBhbmQgdXNlZnVsIHR5cGUgYWxpYXNlcy4KKyAgICAgICAg
KiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOgorICAgICAgICAoV2ViS2l0Ojpp
bnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246
OmNyZWF0ZSk6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6SW5zcGVjdG9yRXh0
ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjp+SW5zcGVjdG9yRXh0
ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIFRoaXMgaXMgYSBwbGFjZWhvbGRlciBvYmplY3QgdGhh
dCdzIHVzZWQgZm9yIHRoZSB3cmFwcGVyIHN5c3RlbSwKKyAgICAgICAgc2luY2Ugd2UgZG9uJ3Qg
aGF2ZSBzaW5nbGUgQysrIG9iamVjdHMgZm9yIGVhY2ggZXh0ZW5zaW9uIHRvIGJhY2sgdGhlIEFQ
SSBvYmplY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tOgorICAgICAg
ICAoLVtfV0tJbnNwZWN0b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvciB1bnJlZ2lzdGVyRXh0
ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBJbXBsZW1lbnQgbmV3IF9XS0lu
c3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8gdGhlIEluc3BlY3RvciB3
ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb24ubW06CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBpbml0V2l0aElk
ZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBkZWFsbG9jXSk6
CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBfYXBpT2JqZWN0XSk6CisgICAgICAg
ICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBleHRlbnNpb25JRF0pOgorICAgICAgICBBZGRlZC4g
VGhpcyBpcyBhIGRhdGEgb2JqZWN0IHRoYXQncyBhbHNvIHVzZWQgYXMgYSB0b2tlbiB0byB1bnJl
Z2lzdGVyIHRoZSBleHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaDogQWRkIG5ldyBTUEkuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlOYW1lOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBJbXBs
ZW1lbnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8g
dGhlIEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0
b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOiBBZGQgRnJvbnRlbmRMb2Fk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpleHRlbnNpb25D
b250cm9sbGVyIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICBT
ZXQgdXAgdGhlIGV4dGVuc2lvbiBjb250cm9sbGVyIG9iamVjdCBhZnRlciB0aGUgZnJvbnRlbmQg
aGFzIGJlZW4gY3JlYXRlZC4KKyAgICAgICAgSG9vayB1cCB0aGUgRnJvbnRlbmRMb2FkZWQgZXZl
bnQgc2VudCBmcm9tIEluc3BlY3RvciB3ZWIgcHJvY2VzcyBzbyB0aGF0IHRoZQorICAgICAgICBl
eHRlbnNpb24gY29udHJvbGxlciBjYW4gYmUgbm90aWZpZWQgb2Ygd2hlbiBpdCdzIHNhZmUgdG8g
bWVzc2FnZSB0aGUgZnJvbnRlbmQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OmNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5
OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIFNldCB1cCB0aGUgZXh0ZW5zaW9u
IGNvbnRyb2xsZXIgb2JqZWN0IGFmdGVyIHRoZSBmcm9udGVuZCBoYXMgYmVlbiBjcmVhdGVkLgor
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZXh0ZW5zaW9uQ29udHJvbGxlciBjb25z
dCk6IEFkZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp3aGVuRnJvbnRlbmRIYXNMb2FkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6aW5zcGVj
dG9yRnJvbnRlbmRMb2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6dW5yZWdpc3RlckV4dGVu
c2lvbik6CisgICAgICAgIEFkZGVkLiBGb3J3YXJkIEFQSSByZXF1ZXN0cyB0byB0aGUgV2ViIElu
c3BlY3RvcidzIHdlYiBwcm9jZXNzIHRvIGJlIGV2YWx1YXRlZCBpbiB0aGUgZnJvbnRlbmQuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURp
c3BhdGNoZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JG
cm9udGVuZEFQSURpc3BhdGNoZXI6OmRpc3BhdGNoQ29tbWFuZCk6CisgICAgICAgIEFkZCBhIG1v
cmUgZ2VuZXJpYyB3YXkgdG8gZW5jb2RlIHZhbHVlcyB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRz
IHRvIEluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclVJOjpjbG9zZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmZyb250ZW5k
UGFnZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZnJv
bnRlbmRBUElEaXNwYXRjaGVyKTogQWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2Fn
ZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVu
cmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tUmVzdWx0KToK
KyAgICAgICAgSGFuZGxlIGluY29taW5nIG1lc3NhZ2VzIGJ5IGZvcndhcmRpbmcgdGhlIGFzc29j
aWF0ZWQgY29tbWFuZCB0byBXSS5XZWJFeHRlbnNpb25Db250cm9sbGVyCisgICAgICAgIHZpYSBJ
bnNwZWN0b3JGcm9udGVuZEFQSSBldmFsdWF0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICBGYWxsb3V0IGZyb20gdW5pZmllZCBi
dWlsZCBjaHVua2luZyBzaGlmdHMuCisKIDIwMjAtMTEtMDMgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSByZW1vdmUgc3lzY3RsLm9pZGZtdC4g
YWNjZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oCmluZGV4IDBhNzlkODZiM2M0Njk3NzgxNGE2OGY0ZWFhZWRiOGE4ZWU5ZmZiYTMu
LmU4ZDEzYTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zNiwx
NCArMzYsMTYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dhYmxlVHlwZS5oIgogI2luY2x1
ZGUgIlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOworY2xhc3MgUGFnZTsKIAotY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQgeworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IHsKIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIERvY2tTaWRlIHsKICAgICAgICAgVW5kb2NrZWQgPSAwLApAQCAtMTEx
LDYgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXImIGZyb250ZW5kQVBJRGlz
cGF0Y2hlcigpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhZ2UqIGZyb250ZW5k
UGFnZSgpID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBpc1VuZGVyVGVz
dCgpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCAxMTgxYTIwOTZjMTc2MGRmMjI5MzI2MDEw
NmM1ZDA5NWM0MWQzNDFhLi5hZDE4ZjYwODA1ZDFjZTE2ZTY5NDJlZjMyNzAyOTk0ODQ1OWFlNzk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmgKQEAgLTk1LDcgKzk1LDggQEAgcHVibGljOgogICAgIFN0cmluZyBi
YWNrZW5kQ29tbWFuZHNVUkwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdHJpbmcoKTsgfTsKIAog
ICAgIEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVy
KCkgZmluYWwgeyByZXR1cm4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7IH0KLQorICAgIFBhZ2Uq
IGZyb250ZW5kUGFnZSgpIGZpbmFsIHsgcmV0dXJuIG1fZnJvbnRlbmRQYWdlOyB9CisgICAgCiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldERvY2tpbmdVbmF2YWlsYWJsZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxl
ckJhc2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9BcHBDb250cm9sbGVyQmFzZS5qcwppbmRleCA2MWQ0YzQ1OTQ0ZGI2Njk1NWQwMDA5NzNhM2U2
ZGVhM2FlNjZlYTU2Li4wMDI1Mzc0Yjc4ZDcwYzA3ZmZmZDhiYjNlNGFlMTJlMDM4OGViZjYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9BcHBDb250cm9sbGVyQmFzZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qcwpAQCAtNDEsMTEgKzQxLDE0
IEBAIFdJLkFwcENvbnRyb2xsZXJCYXNlID0gY2xhc3MgQXBwQ29udHJvbGxlckJhc2UKICAgICBj
b25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlOwor
CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBuZXcgV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uQ29udHJvbGxlcjsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBk
ZWJ1Z2dhYmxlVHlwZSgpIHsgdGhyb3cgV0kuTm90SW1wbGVtZW50ZWRFcnJvci5zdWJjbGFzc011
c3RPdmVycmlkZSgpOyB9CisgICAgZ2V0IGV4dGVuc2lvbkNvbnRyb2xsZXIoKSB7IHJldHVybiB0
aGlzLl9leHRlbnNpb25Db250cm9sbGVyOyB9CiAKICAgICAvLyBTaW5jZSB2YXJpb3VzIG1lbWJl
cnMgb2YgdGhlIGFwcCBjb250cm9sbGVyIGRlcGVuZCBvbiB0aGUgZ2xvYmFsIHNpbmdsZXRvbiB0
byBleGlzdCwKICAgICAvLyBzb21lIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGhhcHBlbiBhZnRl
ciB0aGUgYXBwIGNvbnRyb2xsZXIgaGFzIGJlZW4gY29uc3RydWN0ZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0
b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZmFmM2VmNWE2N2NhMzBmOWQyMjRiZjQ5YWIzMTc5NGUzNjQxOTU5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdl
Ykluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBj
b25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2V4
dGVuc2lvbklETWFwID0gbmV3IE1hcDsKKyAgICB9CisKKyAgICByZWdpc3RlckV4dGVuc2lvbihl
eHRlbnNpb25JRCwgZGlzcGxheU5hbWUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZXh0ZW5z
aW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgeworICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJu
YWxFcnJvcigiVW5hYmxlIHRvIHJlZ2lzdGVyIGV4dGVuc2lvbiwgaXQncyBhbHJlYWR5IHJlZ2lz
dGVyZWQ6ICIsIGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CisgICAgICAgICAgICByZXR1cm4g
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZS5SZWdpc3RyYXRpb25GYWlsZWQ7Cisg
ICAgICAgIH0KKworICAgICAgICBsZXQgZXh0ZW5zaW9uID0gbmV3IFdJLldlYkluc3BlY3RvckV4
dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOworICAgICAgICB0aGlzLl9leHRlbnNp
b25JRE1hcC5zZXQoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvbik7CisKKyAgICAgICAgY29uc29sZS5s
b2coIlJlZ2lzdGVyZWQgZXh0ZW5zaW9uOiAiLCBleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpOwor
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5XZWJJbnNwZWN0b3JFeHRl
bnNpb25Db250cm9sbGVyLkV2ZW50LkV4dGVuc2lvbkFkZGVkLCB7ZXh0ZW5zaW9ufSk7CisgICAg
fQorCisgICAgdW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCkKKyAgICB7CisgICAgICAg
IGlmICghdGhpcy5fZXh0ZW5zaW9uSURNYXAuaGFzKGV4dGVuc2lvbklEKSkgeworICAgICAgICAg
ICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigiVW5hYmxlIHRvIHVucmVnaXN0ZXIgZXh0ZW5zaW9u
IHdpdGggdW5rbm93biBJRDogIiwgZXh0ZW5zaW9uSUQpOworICAgICAgICAgICAgcmV0dXJuIFdJ
LldlYkluc3BlY3RvckV4dGVuc2lvbi5FcnJvckNvZGUuSW52YWxpZFJlcXVlc3Q7CisgICAgICAg
IH0KKworICAgICAgICBsZXQgZXh0ZW5zaW9uID0gdGhpcy5fZXh0ZW5zaW9uSURNYXAuZ2V0KGV4
dGVuc2lvbklEKTsKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uSURNYXAuZGVsZXRlKGV4dGVuc2lv
bklEKTsKKworICAgICAgICBjb25zb2xlLmxvZygiVW5yZWdpc3RlcmVkIGV4dGVuc2lvbjogIiwg
ZXh0ZW5zaW9uSUQpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5X
ZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50LkV4dGVuc2lvblJlbW92ZWQsIHtl
eHRlbnNpb259KTsKKyAgICB9Cit9OworCitXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9s
bGVyLkV2ZW50ID0geworICAgIEV4dGVuc2lvbkFkZGVkOiAiZXh0ZW5zaW9uLWFkZGVkIiwKKyAg
ICBFeHRlbnNpb25SZW1vdmVkOiAiZXh0ZW5zaW9uLXJlbW92ZWQiLAorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBkOTk4ZDdjZWVkNzdh
Yzk4ZjljM2I1ZDJkY2YwZTU0MWQ5YTkzYzJhLi4xOTA3NzdlMmQxYjBlMzk2ZTM5Yzc0YmVlM2Fm
OGE1ZWQxYWYzZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCkBAIC00ODgsNiArNDg4LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1R5
cGVEZXNjcmlwdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9UeXBl
U2V0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1VSTEJyZWFrcG9pbnQu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dlYlNvY2tldFJlc291
cmNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dyYXBwZWRQcm9taXNl
LmpzIj48L3NjcmlwdD4KIApAQCAtOTAyLDYgKzkwMyw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9UeXBlVG9rZW5Bbm5vdGF0b3IuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcyI+
PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRGlhZ25vc3RpY0NvbnRy
b2xsZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOGVlNDc1MDIxZWQ1YmVjYzBjOWFlODcxNGM1NTZmYTQ4MTA5NzdhZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1dJLldlYkluc3BlY3RvckV4dGVuc2lvbiA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbiBl
eHRlbmRzIFdJLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGV4dGVuc2lvbklELCBkaXNwbGF5
TmFtZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dHlwZW9mIGV4dGVuc2lvbklEID09PSAic3RyaW5nIiwgZXh0ZW5zaW9uSUQpOworICAgICAgICBj
b25zb2xlLmFzc2VydCh0eXBlb2YgZGlzcGxheU5hbWUgPT09ICJzdHJpbmciLCBkaXNwbGF5TmFt
ZSk7CisKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uSUQgPSBleHRlbnNpb25JRDsKKyAgICAgICAg
dGhpcy5fZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMK
KworICAgIGdldCBleHRlbnNpb25JRCgpIHsgcmV0dXJuIHRoaXMuX2V4dGVuc2lvbklEOyB9Cisg
ICAgZ2V0IGRpc3BsYXlOYW1lKCkgeyByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7IH0KK307CisK
Ky8vIE5vdGU6IHRoZXNlIHZhbHVlcyBhcmUgc3lub255bW91cyB3aXRoIHRoZSB2YWx1ZXMgb2Yg
ZW51bSBjbGFzcyBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yLgorV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLkVycm9yQ29kZSA9IHsKKyAgICBJbnRlcm5hbEVycm9yOiAiSW50ZXJuYWxF
cnJvciIsCisgICAgSW52YWxpZFJlcXVlc3Q6ICJJbnZhbGlkUmVxdWVzdCIsCisgICAgSW52YWxp
ZFN0YXRlOiAiSW52YWxpZFN0YXRlIiwKKyAgICBSZWdpc3RyYXRpb25GYWlsZWQ6ICJSZWdpc3Ry
YXRpb25GYWlsZWQiLAorICAgIFJlc291cmNlTG9hZEZhaWxlZDogIlJlc291cmNlTG9hZEZhaWxl
ZCIsCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRBUEkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcwppbmRleCAxZDFm
Mjg4YmI4MzRkNDgyZjY0ZTM5ZWYwZmJkNTM4NmQ4NzRkZWYwLi45YzE0OGE5ZjhjZWY2OTlmZDUy
NjIzNTY3YmQ5ODc4Y2U3M2ZiYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVu
ZEFQSS5qcwpAQCAtMTk2LDUgKzE5NiwxNyBAQCBJbnNwZWN0b3JGcm9udGVuZEFQSSA9IHsKICAg
ICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoKEluc3BlY3RvckZyb250ZW5k
QVBJLl9wZW5kaW5nQ29tbWFuZHNbaV0pOwogCiAgICAgICAgIGRlbGV0ZSBJbnNwZWN0b3JGcm9u
dGVuZEFQSS5fcGVuZGluZ0NvbW1hbmRzOworICAgIH0sCisKKyAgICAvLyBSZXR1cm5zIGEgV0ku
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZSBpZiBhbiBlcnJvciBvY2N1cnJlZCwgb3Ro
ZXJ3aXNlIG5vdGhpbmcuCisgICAgcmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3Bs
YXlOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250
cm9sbGVyLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CisgICAg
fSwKKworICAgIC8vIFJldHVybnMgYSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2Rl
IGlmIGFuIGVycm9yIG9jY3VycmVkLCBvdGhlcndpc2Ugbm90aGluZy4KKyAgICB1bnJlZ2lzdGVy
RXh0ZW5zaW9uKGV4dGVuc2lvbklEKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFw
cC5leHRlbnNpb25Db250cm9sbGVyLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQpOwog
ICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0
bWwKaW5kZXggMjk0MjYzODMxYjgzNmI5OTk0OWI3MzllNjBmMDAxNTdjZGEzMGNkZC4uYjljMzgy
NDAxMjJhZjhkYTUwNjI0OGYwZDAyZjhhNzA2OWM2MWZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMjI0LDYgKzIyNCw3IEBACiAgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9UaW1lbGluZU1hcmtlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9UaW1lbGluZVJlY29yZGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9VUkxCcmVha3BvaW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9XZWJTb2NrZXRSZXNvdXJjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVkUHJvbWlzZS5qcyI+PC9zY3JpcHQ+CiAKQEAgLTI2Nyw2
ICsyNjgsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9SdW50aW1lTWFuYWdlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UaW1lbGluZU1hbmFn
ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9XZWJJbnNwZWN0
b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291
cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGMwZWZjYWQ1
NzQ1MDNhOGE5YWI3YzdlYzA1ZWY0NTlkMzA1NGYzOWYuLjFhMzliMDVhNDYwZjMzZDllNzg4YzIz
ZjUyZmQ0ZDc2Y2QwNGNmNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKQEAgLTk1LDYgKzk1LDcgQEAgJChQUk9KRUNUX0RJUikvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKyQoUFJP
SkVDVF9ESVIpL1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vz
cy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5Lm1lc3NhZ2VzLmluCiAk
KFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvTGVnYWN5Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTE0MSw2ICsxNDIsNyBAQCAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJydGMvU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dl
Ykdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5tZXNzYWdlcy5pbgorJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgogJChQUk9K
RUNUX0RJUikvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggMjYyZmJkMTMzZTg1OGJjMzkxMTllMjRjZTYxNjU5ZjA1ZWUxZWI2ZS4uOGRjMWQy
ZjU0OTQzNjNkNzQxNzdhMWYyN2MzOTA2MTQ2OTRiMDEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zNDUsNiArMzQ1LDkgQEAgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyTWVzc2FnZXNSZXAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1l
c3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJN
ZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
ckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2Fn
ZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAzZWIyNDYxMzYxNWE0
ZTcxZjBlOGVhMmMxMzNhZmZjMGY4YzYxNDFkLi45ODRlYzQ5NTUxYWFjNGFhY2QwN2M5MDk0MGVk
NGFlMTBlYjA4MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xODMsNiArMTgz
LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIgXAogCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
ckludGVycnVwdERpc3BhdGNoZXIgXAogCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJIFwKKwlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIgXAogCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvciBcCiAJV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkgXAogCVdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKaW5kZXggM2I4MjM2ZGE4M2Q3YzY2MjM5M2MxNDc3ZjRmOWFlMDU3NzM1
MzY3OS4uNDM5OTM2NjRhMTMxODFlZTMzNmUzMTE0OTBkYmNhYWYzN2E0MTQzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC02NzIsNiArNjcyLDcgQEAgZGVm
IGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkZpbmRPcHRpb25zJzog
WyciV2ViRmluZE9wdGlvbnMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVJlY29nbml6
ZXJTdGF0ZSc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpHZXN0dXJl
VHlwZSc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAorICAgICAgICAnV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcic6IFsnIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiJ10sCiAgICAgICAg
ICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCc6IFsnIkxheWVySG9zdGluZ0NvbnRleHQu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNv
bnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGFnZVN0YXRlJzogWyciU2Vzc2lvblN0YXRl
LmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggNmQwNjU2NDVkY2Vl
NjJlNTlkNTBkYmVmMzc0MzVhNDlhODBlYjY4Mi4uYjdiN2VlNjg4YWE2ZmY4OTA1YTIxYjc3OGQ0
ZDk2MzUyMjUxNjM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTM3
LDYgKzEzNyw5IEBAIHB1YmxpYzoKICAgICAgICAgSWNvbkRhdGFiYXNlLAogICAgICAgICBJbnNw
ZWN0b3IsCiAgICAgICAgIEluc3BlY3RvckNvbmZpZ3VyYXRpb24sCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorICAgICAgICBJbnNwZWN0b3JFeHRlbnNpb24sCisjZW5kaWYKICAg
ICAgICAgS2V5VmFsdWVTdG9yYWdlTWFuYWdlciwKICAgICAgICAgTWVkaWFDYWNoZU1hbmFnZXIs
CiAgICAgICAgIE1lc3NhZ2VMaXN0ZW5lciwKQEAgLTM4Miw2ICszODUsOSBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPEFQSTo6T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2Jq
ZWN0OjpUeXBlOjpJY29uRGF0YWJhc2UsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNw
ZWN0b3IsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3JDb25maWd1cmF0aW9u
LAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICAgICAgQVBJOjpPYmplY3Q6
OlR5cGU6Okluc3BlY3RvckV4dGVuc2lvbiwKKyNlbmRpZgogICAgICAgICBBUEk6Ok9iamVjdDo6
VHlwZTo6S2V5VmFsdWVTdG9yYWdlTWFuYWdlciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6
Ok1lZGlhQ2FjaGVNYW5hZ2VyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6TWVzc2FnZUxp
c3RlbmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IGM5NDIw
Y2Q1ZjIwZGIxMTk5YTJmZjBhNTM1Y2UwMDljZjkyODY1YTQuLmY4YTAyOGIwNmI1MTA2MTA4ZGRj
M2NiYjY4YTQwMWJmYTM1ZjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmpl
Y3QubW0KQEAgLTk5LDYgKzk5LDEwIEBACiAjaW1wb3J0ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
SW50ZXJuYWwuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
I2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNlbmRpZgorCiBzdGF0
aWMgY29uc3Qgc2l6ZV90IG1pbmltdW1PYmplY3RBbGlnbm1lbnQgPSBhbGlnbm9mKHN0ZDo6YWxp
Z25lZF9zdG9yYWdlPHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk+Ojp0eXBlKTsK
IHN0YXRpY19hc3NlcnQobWluaW11bU9iamVjdEFsaWdubWVudCA+PSBhbGlnbm9mKHZvaWQqKSwg
Ik9iamVjdHMgc2hvdWxkIGFsd2F5cyBiZSBhdCBsZWFzdCBwb2ludGVyLWFsaWduZWQuIik7CiBz
dGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1FeHRyYVNwYWNlRm9yQWxpZ25tZW50ID0gbWluaW11
bU9iamVjdEFsaWdubWVudCAtIGFsaWdub2Yodm9pZCopOwpAQCAtMjcwLDYgKzI3NCwxMiBAQCB2
b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3
cmFwcGVyID0gW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYWxsb2NdOwogICAgICAgICBicmVh
azsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBjYXNlIFR5cGU6Oklu
c3BlY3RvckV4dGVuc2lvbjoKKyAgICAgICAgd3JhcHBlciA9IFtfV0tJbnNwZWN0b3JFeHRlbnNp
b24gYWxsb2NdOworICAgICAgICBicmVhazsKKyNlbmRpZgorCiAgICAgY2FzZSBUeXBlOjpOYXZp
Z2F0aW9uOgogICAgICAgICB3cmFwcGVyID0gW1dLTmF2aWdhdGlvbiBhbGxvY107CiAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5z
aW9uVHlwZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU3NDgyZjg4YzhhNTZmMDE3Yzc4NWNiY2JlOGJmZDc0NDU0MzVl
NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXVEY6OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNp
b25FcnJvclRvU3RyaW5nKEluc3BlY3RvckV4dGVuc2lvbkVycm9yIGVycm9yKQoreworICAgIHN3
aXRjaCAoZXJyb3IpIHsKKyAgICBjYXNlIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5h
bEVycm9yOgorICAgICAgICByZXR1cm4gIkludGVybmFsRXJyb3IiX3M7CisgICAgY2FzZSBJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Q6CisgICAgICAgIHJldHVybiAiSW52
YWxpZFJlcXVlc3QiX3M7CisgICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxp
ZFN0YXRlOgorICAgICAgICByZXR1cm4gIkludmFsaWRTdGF0ZSJfczsKKyAgICBjYXNlIEluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOgorICAgICAgICByZXR1cm4gIkNv
bnRleHREZXN0cm95ZWQiX3M7CisgICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVn
aXN0cmF0aW9uRmFpbGVkOgorICAgICAgICByZXR1cm4gIlJlZ2lzdHJhdGlvbkZhaWxlZCJfczsK
KyAgICBjYXNlIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZXNvdXJjZUxvYWRGYWlsZWQ6Cisg
ICAgICAgIHJldHVybiAiUmVzb3VyY2VMb2FkRmFpbGVkIl9zOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiSW50ZXJuYWxFcnJvciI7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTBlYzJiOTBlMjcyYjQ3OTFjMzMxN2Y3ZjkzM2U4YjA1NjhhNDZiZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVz
LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIEluc3BlY3RvckV4dGVuc2lvblRhYklEID0gV1RG
OjpTdHJpbmc7Cit1c2luZyBJbnNwZWN0b3JFeHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOworCitl
bnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CisgICAgSW50ZXJu
YWxFcnJvciwKKyAgICBJbnZhbGlkUmVxdWVzdCwKKyAgICBJbnZhbGlkU3RhdGUsCisgICAgQ29u
dGV4dERlc3Ryb3llZCwKKyAgICBSZWdpc3RyYXRpb25GYWlsZWQsCisgICAgUmVzb3VyY2VMb2Fk
RmFpbGVkLAorfTsKKworV1RGOjpTdHJpbmcgaW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmlu
ZyhJbnNwZWN0b3JFeHRlbnNpb25FcnJvcik7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Oklu
c3BlY3RvckV4dGVuc2lvbkVycm9yPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
KyAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvciwKKyAgICAgICAgV2ViS2l0
OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvciwKKyAgICAgICAgV2ViS2l0
OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QsCisgICAgICAgIFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRTdGF0ZSwKKyAgICAgICAgV2ViS2l0
OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZCwKKyAgICAgICAgV2Vi
S2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6UmVnaXN0cmF0aW9uRmFpbGVkLAorICAgICAg
ICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZXNvdXJjZUxvYWRGYWlsZWQKKyAg
ICA+OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKaW5kZXggZTBhYjc0MzZiYWRjMzQ2Mzc0OTQ2NjMzNDcxOWI0NWVkZmQyYjMwNi4u
MzE1ZWZiMDNkMzY0MGQzNzEzODhmNmQwMmIyMmZjNDA5M2VhOGFmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBA
IC0xNjEsNiArMTYxLDcgQEAgU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKIFNoYXJlZC9FZGl0b3JT
dGF0ZS5jcHAKIFNoYXJlZC9Gb250SW5mby5jcHAKIFNoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAor
U2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAogU2hhcmVkL0xheWVyVHJlZUNvbnRl
eHQuY3BwCiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCiBTaGFyZWQvTmF2aWdhdGlvbkFjdGlv
bkRhdGEuY3BwCkBAIC00MzYsNiArNDM3LDcgQEAgVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAogVUlQ
cm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCitVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VE
ZWJ1Z2dhYmxlLmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTU0OSw2ICs1NTEsNyBAQCBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3IuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCiBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmNwcAog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCitXZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDk5YmVhMWZiNTllOTZkNmEwMGVmMWJiYTA4YTcyNGIxZjI4ODcwMDQuLjYw
NWVhODNmMTBkNGIwYWNkN2EzNDZmYzEzZTI3YjU0ZDZlZjg1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTI1OSw2ICsyNTksNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ci5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW0KIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
cldpbmRvdy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnRlcm5hbERlYnVnRmVhdHVyZS5t
bQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZTBmMThhZmUyYzk0ZWM5NzUyN2Y2YjdhZmI0MGRhY2VlZTA0ODBiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVu
c2lvbi5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBJbnNw
ZWN0b3JFeHRlbnNpb24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPE9iamVjdDo6VHlw
ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnNwZWN0
b3JFeHRlbnNpb24+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcikKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckV4dGVuc2lvbihpZGVudGlm
aWVyKSk7CisgICAgfQorCisgICAgZXhwbGljaXQgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFdURjo6U3RyaW5n
IG1faWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3Rvci5oCmluZGV4IDE4OTllODE4YjM2M2U4NWQ0NjBiMzA5NzNi
NGFhMGQ0ODg5OTU5OWUuLjg2YjFjZjg5NjI3OGYxOTcyYjlhNzk5N2M0OTI3NGQxZWVkY2NmNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
LmgKQEAgLTI1LDE3ICsyNSwxNSBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJ
bnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBj
bGFzcyBXS1dlYlZpZXc7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CitAY2xhc3MgX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uOwogQHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlOwogCi1OU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgotCi1AcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdAot
LSAodm9pZCljbG9zZTsKLUBlbmQKLQogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQp
LCBpb3MoMTIuMikpCiBAaW50ZXJmYWNlIF9XS0luc3BlY3RvciA6IE5TT2JqZWN0IDxfV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0PgogCkBAIC01Miw2ICs1MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKQogCiAtICh2b2lkKWNvbm5lY3Q7CiAtICh2b2lk
KXNob3c7CistICh2b2lkKWNsb3NlOwogLSAodm9pZCloaWRlOwogLSAodm9pZClzaG93Q29uc29s
ZTsKIC0gKHZvaWQpc2hvd1Jlc291cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4IDY3MzQxMWYzMGVmMWQxMDhlMWQ0NDQ3
NDE5NGJjY2E4ZjkzZDFmNmIuLjZjMDBiOTZkZDE5NWQwMThmNmYzNjMyOTdiOGU5YWY0MzY2YzRl
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3Rvci5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwu
aCIKIAogI2ltcG9ydCAiSW5zcGVjdG9yRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLRXJyb3IuaCIK
ICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtMzcsNiArMzgsMTMgQEAKICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYg
RU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0ZW5z
aW9uLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5o
IgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0b3IKIAog
Ly8gTUFSSzogX1dLSW5zcGVjdG9yIG1ldGhvZHMKQEAgLTE5NCw0ICsyMDIsMzggQEAgLSAoQVBJ
OjpPYmplY3QmKV9hcGlPYmplY3QKICAgICByZXR1cm4gKl9pbnNwZWN0b3I7CiB9CiAKKy8vIE1B
Uks6IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcworCistICh2b2lkKXJlZ2lzdGVy
RXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0
cmluZyAqKWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwg
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xs
ZXIoKS5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0
ZWRFeHRlbnNpb25JRCA9IHJldGFpblB0cihleHRlbnNpb25JRCksIHByb3RlY3RlZFNlbGYgPSBy
ZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4g
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNh
cHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpX
S0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktl
eTogaW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmls
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxv
Y2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0
ZWRFeHRlbnNpb25JRC5nZXQoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdKTsKKyAgICB9KTsKKyNl
bHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOworI2VuZGlm
Cit9CisKKy0gKHZvaWQpdW5yZWdpc3RlckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
ICopZXh0ZW5zaW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgX2lu
c3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5z
aW9uLmV4dGVuc2lvbklELCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVy
ZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29s
LCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
OkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JFeHRlbnNpb25F
cnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsKTsKKyAgICB9KTsKKyNlbHNlCisg
ICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21h
aW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKKyNlbmRpZgorfQorCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM1YTYwMWVkMmNmMzE0ZTdhOGJmODYyMzll
ODBiNGIxYWE5YmM4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtMCwwICsxLDQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNT
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSkKK0BpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7
CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKmV4dGVuc2lvbklE
OworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2Y3ZGU5NDNkNWFjMzEzMWZkMTU3ZmM4ZmI1ODU5ZjEyNzE4NDEzMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb24ubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvckV4dGVu
c2lvbgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklECit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBUEk6
Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPihzZWxm
LCBleHRlbnNpb25JRCk7CisgICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVh
bGxvYworeworICAgIF9leHRlbnNpb24tPkFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjp+SW5zcGVj
dG9yRXh0ZW5zaW9uKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKworLSAoQVBJOjpP
YmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9leHRlbnNpb247Cit9CisKKy8vIE1B
Uks6IFByb3BlcnRpZXMuCisKKy0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKK3sKKyAgICByZXR1
cm4gX2V4dGVuc2lvbi0+aWRlbnRpZmllcigpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb25Ib3N0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg3ZDk2Mzk4MjcxY2EzZmIxZTk5MTM3NDI0
OGRiZGQ3ZDQzMzUxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmgKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xh
c3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOworCitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uSG9zdAorQG9wdGlvbmFsCisKKy8qKgorICogQGFic3RyYWN0IFJlZ2lzdGVycyBhIFdlYiBF
eHRlbnNpb24gd2l0aCB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yLgorICogQHBhcmFtIGV4
dGVuc2lvbklEIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBleHRlbnNpb24uCisgKiBAcGFy
YW0gZGlzcGxheU5hbWUgQSBsb2NhbGl6ZWQgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9u
LgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8g
YmUgY2FsbGVkIHdoZW4gcmVnaXN0cmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgorICoKKyAqIFdl
YiBFeHRlbnNpb25zIGluIFdlYiBJbnNwZWN0b3IgYXJlIGFjdGl2ZSBhcyBzb29uIGFzIHRoZXkg
YXJlIHJlZ2lzdGVyZWQuCisgKi8KKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5T
U3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyoqCisgKiBA
YWJzdHJhY3QgVW5yZWdpc3RlcnMgYSBXZWIgRXh0ZW5zaW9uIHdpdGggdGhlIGFzc29jaWF0ZWQg
V2ViIEluc3BlY3Rvci4KKyAqIEBwYXJhbSBleHRlbnNpb25JRCBBIHVuaXF1ZSBpZGVudGlmaWVy
IGZvciB0aGUgZXh0ZW5zaW9uLgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21w
bGV0aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdW5yZWdpc3RlcmluZyBzdWNjZWVkcyBv
ciBmYWlscy4KKyAqCisgKiBVbnJlZ2lzdGVyaW5nIGFuIGV4dGVuc2lvbiB3aWxsIGF1dG9tYXRp
Y2FsbHkgY2xvc2UgYW55IGFzc29jaWF0ZWQgc2lkZWJhcnMvdGFicy4KKyAqLworLSAodm9pZCl1
bnJlZ2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhh
bmRsZXI7CisKKy8qKgorICogQGFic3RyYWN0IENsb3NlcyB0aGUgYXNzb2NpYXRlZCBXZWIgSW5z
cGVjdG9yIGluc3RhbmNlLiBUaGlzIHdpbGwgY2F1c2UgYWxsCisgKiByZWdpc3RlcmVkIF9XS0lu
c3BlY3RvckV4dGVuc2lvbnMgdG8gYmUgdW5yZWdpc3RlcmVkIGFuZCBpbnZhbGlkYXRlZC4KKyAq
LworLSAodm9pZCljbG9zZTsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwYzQ1ZDU0MDg4MWQ1NGY4NzQ3
ZDIxNTY0MmNkODhhZmM5ZDBkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgi
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQgIkFQSUluc3Bl
Y3RvckV4dGVuc2lvbi5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRl
bnNpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tJbnNwZWN0b3JFeHRlbnNpb247
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KworQGludGVyZmFjZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKCkgPFdLT2JqZWN0PiB7CitAcGFj
a2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4gX2V4
dGVuc2lvbjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJp
bmcgKilleHRlbnNpb25JZGVudGlmaWVyOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VO
RAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaAppbmRleCBiOWE4YjIwMjAwNTI5YTQyZGE0
YWZjMjNkNGZkNGNmMTIwYzg2ODFjLi5iYTNmYzEzM2IzZmE1NjAyYTdmZDRiNzVmOTJiYjQzMmM2
OGU0NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaApA
QCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmg+CiAKICNpZiAhVEFS
R0VUX09TX0lQSE9ORQogCkBAIC00NCw3ICs0NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFdLUmVtb3RlV2ViSW5zcGVjdG9yRGVidWdnYWJsZVR5cGUpIHsKIH0gV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMi4zKSwgaW9zKDEwLjMpKTsKIAogV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zKDEwLjEyLjMpLCBpb3MoMTAuMykpCi1AaW50ZXJmYWNlIF9XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyIDogTlNPYmplY3QKK0BpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgOiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdD4K
IAogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPF9XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggNGU0MGI4YjdhNzVmNWY3MDM1NWQwMWRk
NzU1N2NkYjFiYWFmYzQ0Yy4uOTFiZDU4ZjRkMTIyOGI4ZmU0ZjUwMWQyYzhmOGE1ZDBhNzNlYTc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAt
MzYsNiArMzYsMTQgQEAKICNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIgogCisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0
ZW5zaW9uLmgiCisjaW1wb3J0ICJXS0Vycm9yLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
SW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2VuZGlmCisKIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCiAKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgKCkKQEAgLTE4Miw2ICsxOTAsNDAgQEAgLSAodm9pZClfc2V0RGlhZ25vc3RpY0xv
Z2dpbmdEZWxlZ2F0ZTooaWQ8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4gX051bGxhYmwK
ICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJs
ZSghIWRlbGVnYXRlKTsKIH0KIAorLy8gTUFSSzogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBt
ZXRob2RzCisKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0
ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9y
ZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5z
aW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0
YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2Fw
dHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxi
b29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJ
bmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JFeHRlbnNp
b25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihB
UEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgp
KSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CisjZW5kaWYKK30KKworLSAodm9pZCl1bnJl
Z2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5
LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0
ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2Nr
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghcmVzdWx0KSB7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNM
b2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9T
dHJpbmcocmVzdWx0LmVycm9yKCkpfV0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2Rl
OldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOworI2VuZGlmCit9CisKIEBlbmQKIAogTlNf
QVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBiMDQ3Mzkz
MWQ3MzEwZjI1OGU5YmVjY2U3MGNlNTIyYzg5YTdlOWU0Li5mNWEwMjJlYTJlMGM5NzNkYjgzMjlm
MDg4YzU4YzcwMTkzYjA5M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTM2LDYg
KzM2LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC05NSw2ICs5OSwxMyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIG1faW5zcGVjdG9y
UGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9G
cm9udGVuZChtZXNzYWdlKSk7CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZy
b250ZW5kTG9hZGVkKCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAg
bV9leHRlbnNpb25Db250cm9sbGVyLT5pbnNwZWN0b3JGcm9udGVuZExvYWRlZCgpOworI2VuZGlm
Cit9CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kRGlkQ2xvc2UoKQog
ewogICAgIFJlZjxSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4gcHJvdGVjdCgqdGhpcyk7CkBAIC0x
NzUsNiArMTg2LDEwIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250
ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCpt
X2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOwor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+
KCptX2luc3BlY3RvclBhZ2UpOworI2VuZGlmCiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgK
aW5kZXggYzAzYTJjYTU3MGQ5ZjZmODBlYmFhZTU0ZmI5M2FkMjU3MGNiNWZhYS4uMGYxYzA5OGY0
MzU5ZDQzZTViZTg1ZGYxN2I2Yjg2NTNmMTBlYjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgK
QEAgLTU2LDYgKzU2LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlZpZXc7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHk7CisjZW5kaWYKIAogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlD
bGllbnQgewogcHVibGljOgpAQCAtODgsNiArOTEsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2V4dGVu
c2lvbkNvbnRyb2xsZXI7IH0KKyNlbmRpZgorICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBO
U1dpbmRvdyAqd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3cuZ2V0KCk7IH0KICAgICBX
S1dlYlZpZXcgKndlYlZpZXcoKSBjb25zdDsKQEAgLTExNyw2ICsxMjQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcy4K
KyAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCk7CiAgICAgdm9pZCBmcm9udGVuZERpZENsb3NlKCk7
CiAgICAgdm9pZCByZW9wZW4oKTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKTsKQEAgLTE0OSw2ICsx
NTcsMTAgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCogbV9j
bGllbnQgeyBudWxscHRyIH07CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBu
dWxscHRyIH07CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVu
c2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKKyAgICAKICAgICBSZWY8QVBJOjpEZWJ1Z2dhYmxlSW5m
bz4gbV9kZWJ1Z2dhYmxlSW5mbzsKICAgICBTdHJpbmcgbV9iYWNrZW5kQ29tbWFuZHNVUkw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzYmVmZmQ1MWFk
OTRiZjA1NWU0OTcyYjZjY2RmMjkyNzc5MjY0ZjIxLi42NzRiZWMzMjQ2ZDM4ODkzZDU1MmU0NjZi
N2VkN2VjZDJlMDhmZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0yMSw2ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFJlbW90
ZVdlYkluc3BlY3RvclByb3h5IHsKKyAgICBGcm9udGVuZExvYWRlZCgpCiAgICAgRnJvbnRlbmRE
aWRDbG9zZSgpCiAgICAgUmVvcGVuKCkKICAgICBSZXNldFN0YXRlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmlu
ZGV4IGYwZjdiMmRmNWU0MTkyYWM0NTQ4YjhmN2JjYjk5N2QxZjEzMGQ0NjAuLjA4MGIxNThmMDFm
N2JkOTZiMTAwMTQ0MTRkNTVjNGM3OGNhNTZhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyLmgiCkBAIC00MjEsNiArNDIyLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNy
ZWF0ZUZyb250ZW5kUGFnZSgpCiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+aWRlbnRpZmllcigpLCAqdGhpcyk7CiAgICAgbV9p
bnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqbV9pbnNw
ZWN0b3JQYWdlLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsKKworI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIg
PSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PigqbV9p
bnNwZWN0b3JQYWdlKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVu
TG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpCkBA
IC01NDYsNiArNTUxLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQ
YWdlQW5kV2luZG93KCkKICAgICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0Zm9ybURl
dGFjaCgpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5z
aW9uQ29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKKyAgICAKICAgICAvLyBOdWxsIG91dCBt
X2luc3BlY3RvclBhZ2UgYWZ0ZXIgcGxhdGZvcm1EZXRhY2goKSwgc28gdGhlIHZpZXdzIGNhbiBi
ZSBjbGVhbmVkIHVwIGNvcnJlY3RseS4KICAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwog
CkBAIC01NzEsNiArNTgwLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kTG9h
ZGVkKCkKIAogICAgIGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAg
YXV0b21hdGlvblNlc3Npb24tPmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCptX2luc3BlY3RlZFBh
Z2UpOworICAgIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVu
c2lvbkNvbnRyb2xsZXItPmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCk7CisjZW5kaWYKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YnJpbmdUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggMTRk
NDc3ZThkNzlhMWMzOTc5YWM1YTg5NzYwYmMzZGYwZjVlOWM4NC4uZjU1NDFiZjcwMjgxN2ViYzhi
ZTM2NTI1ZGFjMzA5Zjg2NTQ1OGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTY5LDYgKzcwLDkgQEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYkluc3Bl
Y3RvclByb3h5Q2xpZW50OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5j
ZXM7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk7CisjZW5kaWYKIAogZW51bSBjbGFzcyBBdHRhY2ht
ZW50U2lkZSB7CiAgICAgQm90dG9tLApAQCAtODAsNiArODQsNyBAQCBjbGFzcyBXZWJJbnNwZWN0
b3JQcm94eQogICAgIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
SW5zcGVjdG9yPgogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJs
aWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxXZWJJbnNwZWN0b3JQcm94eT4KICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBwdWJsaWMgV2Vi
Q29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyCiAjZW5kaWYKQEAgLTEwMiw2ICsxMDcsMTAgQEAg
cHVibGljOgogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW5zcGVjdGVkUGFnZTsgfQogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBl
eHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29udHJvbGxl
cjsgfQorI2VuZGlmCisKICAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFt
X2luc3BlY3RvclBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNWaXNpYmxlOyB9CiAgICAgYm9vbCBpc0Zyb250KCk7CkBAIC0yODYsNiArMjk1LDEwIEBAIHBy
aXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRyIH07CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yQ2xpZW50PiBtX2luc3BlY3RvckNsaWVu
dDsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29u
dHJvbGxlcjsKKyNlbmRpZgorICAgIAogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1Zpc2libGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0F0dGFjaGVkIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhiOWFiZDcwYmQwZmY2MzM5ZTIyYjM4MzlmZTdlMzFiZGYyNjNm
OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTAz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSkKKyAgICA6IG1faW5zcGVjdG9yUGFnZSht
YWtlV2Vha1B0cihpbnNwZWN0b3JQYWdlKSkKK3sKK30KKworV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSgpCit7CisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CisKKyAgICBhdXRvIGNhbGxiYWNrcyA9IHN0ZDo6
ZXhjaGFuZ2UobV9mcm9udGVuZExvYWRlZENhbGxiYWNrUXVldWUsIHsgfSk7CisgICAgZm9yIChh
dXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6d2hlbkZyb250ZW5kSGFz
TG9hZGVkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9mcm9udGVu
ZExvYWRlZCAmJiBtX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlLmFw
cGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6Omluc3BlY3RvckZyb250ZW5kTG9hZGVkKCkKK3sKKyAgICBBU1NF
UlQobV9pbnNwZWN0b3JQYWdlKTsKKworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisg
ICAgYXV0byBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFj
a1F1ZXVlLCB7IH0pOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAg
ICAgIGNhbGxiYWNrKCk7Cit9CisKKy8vIEFQSQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRl
bnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJv
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVn
aXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCwgZGlzcGxheU5hbWUgfSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4
dGVuc2lvbklEJiBleHRlbnNpb25JRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlz
LT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVj
dG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OlVucmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCB9LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YTc3
ODVmM2ZhMTdhZGU0ODJjMjk5YTVmNjczYzg2ODI5ZjMyYjA1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNp
bmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IGZp
bmFsCisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KTsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJveHkmIGlu
c3BlY3RvclBhZ2UpOworICAgIHZpcnR1YWwgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5KCk7CisKKyAgICAvLyBBUEkuCisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yRXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9v
bCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CisKKyAgICAvLyBOb3RpZmljYXRpb25z
LgorICAgIHZvaWQgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKTsKKworcHJpdmF0ZToKKyAgICB2
b2lkIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYpOworCisgICAgV2Vh
a1B0cjxXZWJQYWdlUHJveHk+IG1faW5zcGVjdG9yUGFnZTsKKyAgICBib29sIG1fZnJvbnRlbmRM
b2FkZWQgeyBmYWxzZSB9OworCisgICAgLy8gVXNlZCB0byBxdWV1ZSBhY3Rpb25zIHN1Y2ggYXMg
cmVnaXN0ZXJpbmcgZXh0ZW5zaW9ucyB0aGF0IGhhcHBlbiBlYXJseSBvbi4KKyAgICAvLyBUaGVy
ZSdzIG5vIHBvaW50IHNlbmRpbmcgdGhlc2UgYmVmb3JlIHRoZSBmcm9udGVuZCBpcyBmdWxseSBs
b2FkZWQuCisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnJvbnRlbmRMb2FkZWRDYWxs
YmFja1F1ZXVlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NjY1Y2NiN2JjNmFmN2E3YTA4OTE1ZmRlNDY3MjZk
OTY3ZjVmY2I0Li5kODRiMTcwMDk0YzIwZTA3MGNmODA1YmQyZjI2MTc4ZTYwMmM3NGJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0
MjksOCArMTQyOSwxNSBAQAogCQk5OTU1QTZGNjFDNzk4NkUzMDBFQjZBOTMgLyogQXV0b21hdGlv
blByb3RvY29sT2JqZWN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTU1QTZGMjFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29s
T2JqZWN0cy5jcHAgKi87IH07CiAJCTk5NTVBNkY3MUM3OTg2RTUwMEVCNkE5MyAvKiBBdXRvbWF0
aW9uUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTU1QTZGMzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29s
T2JqZWN0cy5oICovOyB9OwogCQk5OTc4OEFDQjFGNDIxRERBMDBDMDgwMDAgLyogX1dLQXV0b21h
dGlvblNlc3Npb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OTc4OEFDOTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlv
blNlc3Npb25Db25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5NjU5QTI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLzsgfTsKKwkJOTk3OTY1OUYy
NTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTc5NjU5QjI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJOTk3OTY1QTMyNTMxMjhDNzAw
QjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBf
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk3OUNBNTgyMzdGNDlGMTAwMzlFQzA1IC8qIF9XS0luc3Bl
Y3RvclByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5NzlDQTU3MjM3RjQ5RjAwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTk5OTZBOUYy
NTAwNEJDQzAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTk5NkE5RDI1MDA0QkNC
MDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OUIxNjc1NzI1MkJCN0UxMDA3
MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc1NDI1MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTlCMTY3NTgyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVu
c2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OUIxNjc1NTI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50
ZXJuYWwuaCAqLzsgfTsKKwkJOTlCMTY3NUIyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLzsgfTsKKwkJOTlCMTY3NjQyNTJCQkU2
MjAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NjEyNTJCQkU2MTAw
NzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oICovOyB9OwogCQk5
OUMzQUUyRDFEQURBNkFEMDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzNBRTJDMURB
REE2QTcwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oICovOyB9OwogCQk5
OUM4MUQ1QTFDMjBFN0UyMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENTUxQzIwREZCRTAwNUM0
QzgyIC8qIEF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJOTlDODFENUQxQzIxRjM4QjAwNUM0
QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0
aW9uQ2xpZW50LmggKi87IH07CkBAIC00NTUyLDkgKzQ1NTksMjMgQEAKIAkJOTk1NUE2RjMxQzc5
ODY2NDAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9BdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTk5Nzg4QUM5MUY0MjFEQ0EwMEMwODAw
MCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5Nzg4QUNBMUY0MjFEQ0EwMEMwODAwMCAvKiBf
V0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5Nzk2NTlBMjUzMTBBNDgwMEIzMUFFMyAv
KiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJN
ZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk5OTc5NjU5QjI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTk5NkE5RDI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5z
cGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTk5OTZBOUUyNTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclRlc3Rpbmcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JU
ZXN0aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTlCN0VEODI1NTBFNEE4
MDBGNDUwQTQgLyogSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5OUIxNjc1NDI1MkJCN0UwMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVuc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc1NTI1MkJCN0UxMDA3MzE0MEUg
LyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NTYyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9X
S0luc3BlY3RvckV4dGVuc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlC
MTY3NUEyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk5QjE2NzVEMjUyQkJFMEEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk5QjE2NzYwMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NjEyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTlCMTY3NjIyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk5QkUzQjEyMjU0MjJGNDEwMEM2NTUxQyAvKiBBUElJbnNwZWN0b3JFeHRl
bnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5zcGVjdG9yRXh0
ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QkUzQjE2MjU0MzNCOTQw
MEM2NTUxQyAvKiBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JFeHRlbnNpb25UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUMz
QUUyMzFEQUQ4RTM0MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDM0FFMjYxREFEOTQ4NTAwQUY1
QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OUMzQUUyQzFEQURBNkE3MDBBRjVDMTYgLyogV2ViQXV0
b21hdGlvblNlc3Npb25NYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTYxMjUsNiArNjE0Niw4IEBACiAJCQkJNUMxMjFFODMyNDEwMUY3MDAwNDg2RjlCIC8qIEZy
YW1lVHJlZU5vZGVEYXRhLmggKi8sCiAJCQkJMUFDNzVBMUExQjMzNjgyNzAwNTY3NDVCIC8qIEhh
bmdEZXRlY3Rpb25EaXNhYmxlci5oICovLAogCQkJCUJDQ0Y2QjIzMTJDOTNFN0EwMDhGOUMzNSAv
KiBJbWFnZU9wdGlvbnMuaCAqLywKKwkJCQk5OTlCN0VEODI1NTBFNEE4MDBGNDUwQTQgLyogSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwICovLAorCQkJCTk5QkUzQjE2MjU0MzNCOTQwMEM2NTUx
QyAvKiBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oICovLAogCQkJCTFBOTJEQzEyMTJGOEJBQjkw
MDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmNwcCAqLywKIAkJCQkxQTkyREMxMDEyRjhCQTQ2
MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5oICovLAogCQkJCTJEMTA4NzVFMUQyQzU3M0Uw
MEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5jcHAgKi8sCkBAIC03MzQwLDYgKzczNjMsMTAgQEAK
IAkJCQk5OTFGNDkyRTIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUlu
Zm8ubW0gKi8sCiAJCQkJOTkwMzZBRTEyM0E5NDlDRTAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRl
YnVnZ2FibGVJbmZvSW50ZXJuYWwuaCAqLywKIAkJCQk5MTk3OTQwQjIzREJDNTAzMDAyNTc4OTIg
LyogX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCAqLywKKwkJCQk5OUIxNjc1NDI1MkJCN0UwMDA3MzE0
MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi8sCisJCQkJOTlCMTY3NTYyNTJCQjdFMTAw
NzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5tbSAqLywKKwkJCQk5OTc5NjVBMjI1MzEy
OEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oICovLAorCQkJCTk5QjE2
NzU1MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICov
LAogCQkJCTVDQUZERTQ0MjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5o
ICovLAogCQkJCTk5NzlDQTU3MjM3RjQ5RjAwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRl
LmggKi8sCiAJCQkJOTk5OTZBOUQyNTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZh
dGVGb3JUZXN0aW5nLmggKi8sCkBAIC04NjQ4LDYgKzg2NzUsOCBAQAogCQkJCTFDOEUyODMzMTI3
NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5jcHAgKi8sCiAJCQkJMUM4RTI4MzIx
Mjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggKi8sCiAJCQkJMUM3N0MxOTUx
Mjg4QTg3MjAwNkE3NDJGIC8qIFdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluICovLAorCQkJ
CTk5QjE2NzVEMjUyQkJFMEEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5jcHAgKi8sCisJCQkJOTlCMTY3NUEyNTJCQkFERDAwNzMxNDBFIC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggKi8sCiAJCQkJQTU1QkE4MjcxQkEz
OEUxRTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5jcHAgKi8sCiAJCQkJQTU1QkE4
MjgxQkEzOEUxRTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5oICovLAogCQkJCUE1
RUM2QUQyMjE1MUJENjkwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8sCkBAIC04
NzEwLDYgKzg3MzksOSBAQAogCQkJCTFDODkxRDYyMTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNw
ZWN0b3JVSS5jcHAgKi8sCiAJCQkJMUM4OTFENjMxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3Bl
Y3RvclVJLmggKi8sCiAJCQkJMUM4OTFENjQxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3Rv
clVJLm1lc3NhZ2VzLmluICovLAorCQkJCTk5QjE2NzYwMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwICovLAorCQkJCTk5QjE2NzYxMjUyQkJF
NjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCAqLywKKwkJ
CQk5OUIxNjc2MjI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLm1lc3NhZ2VzLmluICovLAogCQkJCUE1NDNFMzBBMjE1QzhBODQwMDI3OUNEOSAvKiBX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcCAqLywKIAkJCQlBNTQzRTMwODIxNUM4QTgzMDAyNzlD
RDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldC5oICovLAogCQkJCUE1NDNFMzA5MjE1QzhBODMw
MDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5jcHAgKi8sCkBAIC05
MzI4LDYgKzkzNjAsNyBAQAogCQkJCTkxOTc5NDA5MjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNw
ZWN0b3JDbGllbnQuaCAqLywKIAkJCQk5OTRDNjA0ODI1M0Y4MjAyMDBCREYwNjAgLyogQVBJSW5z
cGVjdG9yQ29uZmlndXJhdGlvbi5jcHAgKi8sCiAJCQkJOTk0QzYwNDYyNTNDQUNCODAwQkRGMDYw
IC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk5OUJFM0IxMjI1NDIyRjQx
MDBDNjU1MUMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi8sCiAJCQkJMzFCMzYyOTAyMTQx
RUFCQzAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmNwcCAqLywKIAkJCQkzMUIz
NjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCAqLywKIAkJ
CQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQuaCAqLywKQEAgLTEwMzU1LDYgKzEwMzg4LDggQEAKIAkJCQkxQzhFMkEzMjEyNzc4NTI0MDBC
QzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCAqLywKIAkJCQkxQ0E4Qjk0MzEyN0M4ODJB
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJ
CTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgg
Ki8sCisJCQkJOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJOTk3OTY1OUEyNTMxMEE0
ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgg
Ki8sCiAJCQkJMUNCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQ0JCRTQ5RjE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5z
cGVjdG9yVUlNZXNzYWdlcy5oICovLAogCQkJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgyRiAvKiBX
ZWJNRE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtMTA3NjcsNiArMTA4MDIs
OSBAQAogCQkJCTk5MUY0OTJGMjNBODEyQzYwMDU0NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dh
YmxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwMzZBRTIyM0E5NDlDRjAwMDBCMDZBIC8q
IF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkxOTc5NDBDMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTlCMTY3NTcyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk3OTY1QTMyNTMxMjhDNzAwQjMxQUUzIC8q
IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QjE2NzU4
MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNBRkRFNDcyMTMwODQ2QTAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvcklu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTc5Q0E1ODIzN0Y0OUYxMDAzOUVDMDUgLyog
X1dLSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk5OTZBOUYyNTAwNEJD
QzAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAq
LywKQEAgLTExNTAwLDYgKzExNTM4LDkgQEAKIAkJCQkxQzhFMjgzNDEyNzVENzM4MDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQThCOTQ2MTI3Qzg4
MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQzg5MUQ2NjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTk5QjE2NzY0MjUyQkJFNjIwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5Nzk2NTlFMjUzMTBBNDkw
MEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTlCMTY3NUIyNTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0JCRTRB
MTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU1QkE4MkIxQkEzOEU2MTAwN0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBOTQ0QTAxODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklP
U0V2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzMxNCw2ICsxMzM1NSw3IEBACiAJ
CQkJRkVEQkRDRDYxRTY4RDIwMDAwQTU5RjhGIC8qIFdlYkluc3BlY3RvckludGVycnVwdERpc3Bh
dGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4RTJBMzUxMjc3
ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQ0E4Qjk0NTEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTk3OTY1OUYyNTMxMEE0OTAw
QjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0JCRTRBMDE5QjY2QzUzMDA2QjdEODEgLyogV2Vi
SW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3
OEEyMTJCNkFCMTAwRjQ5M0ZEIC8qIFdlYktleWJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUE2MjgwRjMxOTE5OTgyQTAwNkFEOUY5IC8qIFdlYktpdC5tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdl
Ykluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IDY3NzFjNmYwZGU2MzFmY2MxNDJlZjYwODZmZTBh
YWJlNzRjN2Y2NTMuLmQxMzkwYmZkNmY2YmUyMzE1NjY3YzA0ZmQ2YmVjM2Q2YWMxNTUyZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5z
cGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSW5zcGVjdG9yQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4K
IAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNpbmNsdWRlICJXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCIKKyNlbmRpZgorCiAjaWYgIVBMQVRGT1JNKE1BQykg
JiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjZW5kaWYKQEAgLTU4LDggKzYyLDE0IEBAIFJlbW90ZVdlYkluc3Bl
Y3RvclVJOjpSZW1vdGVXZWJJbnNwZWN0b3JVSShXZWJQYWdlJiBwYWdlKQogICAgIFdlYkluc3Bl
Y3RvclVJOjplbmFibGVGcm9udGVuZEZlYXR1cmVzKCk7CiB9CiAKK1JlbW90ZVdlYkluc3BlY3Rv
clVJOjp+UmVtb3RlV2ViSW5zcGVjdG9yVUkoKSA9IGRlZmF1bHQ7CisKIHZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yVUk6OmluaXRpYWxpemUoRGVidWdnYWJsZUluZm9EYXRhJiYgZGVidWdnYWJsZUlu
Zm8sIGNvbnN0IFN0cmluZyYgYmFja2VuZENvbW1hbmRzVVJMKQogeworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVl
PFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcj4oKnRoaXMpOworI2VuZGlmCisKICAg
ICBtX2RlYnVnZ2FibGVJbmZvID0gV1RGTW92ZShkZWJ1Z2dhYmxlSW5mbyk7CiAgICAgbV9iYWNr
ZW5kQ29tbWFuZHNVUkwgPSBiYWNrZW5kQ29tbWFuZHNVUkw7CiAKQEAgLTEwOSw2ICsxMTksOCBA
QCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpmcm9udGVuZExvYWRlZCgpCiAKICAgICBtX2Zy
b250ZW5kQVBJRGlzcGF0Y2hlci0+ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJzZXRJ
c1Zpc2libGUiX3MsIHsgSlNPTjo6VmFsdWU6OmNyZWF0ZSh0cnVlKSB9KTsKIAorICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpGcm9udGVuZExvYWRlZCgpLCBtX3BhZ2UuaWRl
bnRpZmllcigpKTsKKwogICAgIGJyaW5nVG9Gcm9udCgpOwogfQogCkBAIC0xNzQsNiArMTg2LDEw
IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKIHsKICAgICBtX3Bh
Z2UuY29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KG51bGxwdHIpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAg
IG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKKyAgICAKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6RnJvbnRlbmREaWRDbG9zZSgpLCBtX3BhZ2Uu
aWRlbnRpZmllcigpKTsKIH0KIApAQCAtMjU4LDYgKzI3NCwxMiBAQCB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclVJOjpzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkK
IH0KICNlbmRpZgogCitXZWJDb3JlOjpQYWdlKiBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZnJvbnRl
bmRQYWdlKCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLmNvcmVQYWdlKCk7Cit9CisKKwogI2lmICFQ
TEFURk9STShNQUMpICYmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShXSU4pCiBTdHJpbmcg
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OmxvY2FsaXplZFN0cmluZ3NVUkwoKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJ
bnNwZWN0b3JVSS5oCmluZGV4IDAyNWVjOTBhMWQ0YWYxYzlmNTUzZGJjNDJmN2M5MzlmZDQzOTg0
OTMuLmI4ZGE5YTlmOGE1YTc2NmQxMzYxMjI2YWYwYzRlODU2MTY1NmIzZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclVJLmgKQEAgLTM5LDExICszOSwxNiBAQCBjbGFzcyBGbG9hdFJlY3Q7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI7CiBj
bGFzcyBXZWJQYWdlOwogCi1jbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JVSSBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlbW90ZVdlYkluc3BlY3RvclVJPiwgcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyLCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgeworY2xhc3Mg
UmVtb3RlV2ViSW5zcGVjdG9yVUkgZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJlbW90
ZVdlYkluc3BlY3RvclVJPgorICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8UmVtb3RlV2ViSW5zcGVjdG9yVUk+IGNyZWF0ZShXZWJQYWdlJik7CisgICAg
flJlbW90ZVdlYkluc3BlY3RvclVJKCk7CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0
ZWQgUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
QEAgLTk3LDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dDZXJ0aWZpY2F0ZShjb25z
dCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mKSBvdmVycmlkZTsKICAgICB2b2lkIHNlbmRNZXNz
YWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7IH0KKyAgICBXZWJDb3JlOjpQYWdl
KiBmcm9udGVuZFBhZ2UoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfVEVMRU1FVFJZ
KQogICAgIGJvb2wgc3VwcG9ydHNEaWFnbm9zdGljTG9nZ2luZygpIG92ZXJyaWRlOwpAQCAtMTE3
LDYgKzEyMywxMCBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2UmIG1fcGFnZTsKICAgICBSZWY8V2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyPiBtX2Zyb250ZW5kQVBJRGlzcGF0
Y2hlcjsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0PiBtX2Zyb250
ZW5kSG9zdDsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcj4gbV9leHRlbnNpb25Db250
cm9sbGVyOworI2VuZGlmCisKICAgICBEZWJ1Z2dhYmxlSW5mb0RhdGEgbV9kZWJ1Z2dhYmxlSW5m
bzsKICAgICBTdHJpbmcgbV9iYWNrZW5kQ29tbWFuZHNVUkw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggODI4
MDlhZGI2ZGVlNmE1NWJiOTUyNjc4MzUxMzhhYzIzNjc5NWU1ZC4uYzJkODgzNmFjMjIwMDkxYTVj
ZWY1YzY3YzI2N2VlMjgwZDI3YTUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTM2LDEwICszNiwxNSBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9zdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtNjUsNiArNzAsOCBAQCBXZWJJbnNwZWN0b3JVSTo6V2ViSW5zcGVjdG9y
VUkoV2ViUGFnZSYgcGFnZSkKICAgICBXZWJJbnNwZWN0b3JVSTo6ZW5hYmxlRnJvbnRlbmRGZWF0
dXJlcygpOwogfQogCitXZWJJbnNwZWN0b3JVSTo6fldlYkluc3BlY3RvclVJKCkgPSBkZWZhdWx0
OworCiB2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKFdlYlBhZ2VQcm94
eUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGNvbnN0IERlYnVnZ2FibGVJbmZv
RGF0YSYgZGVidWdnYWJsZUluZm8sIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9u
TGV2ZWwpCiB7CiAgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyOwpAQCAtNzIsOCArNzksMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJs
aXNoQ29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGUKICAg
ICBtX3VuZGVyVGVzdCA9IHVuZGVyVGVzdDsKICAgICBtX2luc3BlY3Rpb25MZXZlbCA9IGluc3Bl
Y3Rpb25MZXZlbDsKIAotICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5yZXNldCgpOworI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIg
PSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcj4oKnRoaXMpOwor
I2VuZGlmCiAKKyAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+cmVzZXQoKTsKICAgICBtX2Zy
b250ZW5kQ29udHJvbGxlciA9ICZtX3BhZ2UuY29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpOwogICAgIG1fZnJvbnRlbmRDb250cm9sbGVyLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCh0aGlzKTsKIApAQCAtMTY1LDYgKzE3NSwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9z
ZVdpbmRvdygpCiAKICAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1f
dW5kZXJUZXN0ID0gZmFsc2U7CisgICAgCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3JVSTo6cmVvcGVuKCkKQEAgLTQxMiw2ICs0MjYsMTIgQEAgU3RyaW5nIFdl
Ykluc3BlY3RvclVJOjp0YXJnZXRQcm9kdWN0VmVyc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZGVidWdnYWJsZUluZm8udGFyZ2V0UHJvZHVjdFZlcnNpb247CiB9CiAKK1dlYkNvcmU6OlBhZ2Uq
IFdlYkluc3BlY3RvclVJOjpmcm9udGVuZFBhZ2UoKQoreworICAgIHJldHVybiBtX3BhZ2UuY29y
ZVBhZ2UoKTsKK30KKworCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykgJiYg
IVBMQVRGT1JNKFdJTikKIGJvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCmlu
ZGV4IGE2ZWU3MTMzOTM5ZWYyYTA0YjZiODYyYjI4ZTgyMTdmZTIwZGIxZWUuLjI0YzFhYjQ2OWU4
MGQ1YjM3N2IwNjA5ZjcwNWZkZTZmZTBlOWQyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmgKQEAgLTMxLDEwICszMSwxMCBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRGVidWdnYWJsZVR5cGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0
b3JDb250cm9sbGVyOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OwogY2xhc3MgQ2VydGlm
aWNhdGVJbmZvOwogY2xhc3MgRmxvYXRSZWN0OwogfQpAQCAtNDIsMTAgKzQyLDE3IEBAIGNsYXNz
IEZsb2F0UmVjdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOworI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcjsKKyNlbmRpZgogCi1jbGFzcyBXZWJJbnNwZWN0b3JVSSA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYkluc3BlY3RvclVJPiwgcHJpdmF0ZSBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwg
cHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKK2NsYXNzIFdlYkluc3Bl
Y3RvclVJIGZpbmFsCisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJJbnNwZWN0b3JVST4KKyAg
ICAsIHByaXZhdGUgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJJ
bnNwZWN0b3JVST4gY3JlYXRlKFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JV
SSgpOwogCiAgICAgc3RhdGljIHZvaWQgZW5hYmxlRnJvbnRlbmRGZWF0dXJlcygpOwogCkBAIC0x
NDMsNyArMTUwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXImIGZyb250ZW5kQVBJRGlzcGF0Y2hlcigpIGZpbmFsIHsgcmV0dXJuIG1fZnJv
bnRlbmRBUElEaXNwYXRjaGVyOyB9Ci0KKyAgICBXZWJDb3JlOjpQYWdlKiBmcm9udGVuZFBhZ2Uo
KSBmaW5hbDsKKyAgICAgICAgCiAgICAgdm9pZCBwYWdlUGF1c2VkKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBwYWdlVW5wYXVzZWQoKSBvdmVycmlkZTsKIApAQCAtMTYwLDYgKzE2OCwxMCBAQCBwcml2
YXRlOgogICAgIC8vIGNvcmVQYWdlKCksIHNpbmNlIHdlIG1heSBuZWVkIGl0IGFmdGVyIHRoZSBm
cm9udGVuZCdzIHBhZ2UgaGFzIHN0YXJ0ZWQgZGVzdHJ1Y3Rpb24uCiAgICAgV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlciogbV9mcm9udGVuZENvbnRyb2xsZXIgeyBudWxscHRyIH07CiAKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcj4gbV9leHRlbnNpb25Db250cm9sbGVyOworI2Vu
ZGlmCisKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXI7CiAgICAgYm9vbCBtX3VuZGVyVGVzdCB7IGZhbHNlIH07CiAgICAgRGVidWdnYWJsZUluZm9E
YXRhIG1fZGVidWdnYWJsZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRmZTE0ZjdjMDk1ZWI3YjJiZTU3ZTM0OGZmZGM5ZGEx
YzAxNGQ3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDEz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKKworI2luY2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcihXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCYgaW5zcGVjdG9yRnJv
bnRlbmQpCisgICAgOiBtX2luc3BlY3RvckZyb250ZW5kKG1ha2VXZWFrUHRyKGluc3BlY3RvckZy
b250ZW5kKSkKK3sKKyAgICBQYWdlKiBwYWdlID0gaW5zcGVjdG9yRnJvbnRlbmQuZnJvbnRlbmRQ
YWdlKCk7CisgICAgQVNTRVJUKHBhZ2UpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCpwYWdl
KS5pZGVudGlmaWVyKCksICp0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKCkKK3sKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoKnRoaXMpOworfQorCitP
cHRpb25hbDxJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyOjpwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbVJlc3VsdChKU0M6OkpT
VmFsdWUgcmVzdWx0KQoreworICAgIEFTU0VSVChtX2luc3BlY3RvckZyb250ZW5kKTsKKyAgICBh
dXRvIGdsb2JhbE9iamVjdCA9IG1faW5zcGVjdG9yRnJvbnRlbmQtPmZyb250ZW5kQVBJRGlzcGF0
Y2hlcigpLmZyb250ZW5kR2xvYmFsT2JqZWN0KCk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDsK
KworICAgIGlmIChyZXN1bHQuaXNTdHJpbmcoKSkgeworICAgICAgICBhdXRvIHJlc3VsdFN0cmlu
ZyA9IHJlc3VsdC50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBpZiAocmVzdWx0
U3RyaW5nID09ICJJbnRlcm5hbEVycm9yIikKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9
PSAiSW52YWxpZFJlcXVlc3QiKQorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpJbnZhbGlkUmVxdWVzdDsKKyAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW52
YWxpZFN0YXRlIikKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
SW52YWxpZFN0YXRlOworICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJSZWdpc3RyYXRpb25G
YWlsZWQiKQorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdp
c3RyYXRpb25GYWlsZWQ7CisgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIlJlc291cmNlTG9h
ZEZhaWxlZCIpCisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OlJl
c291cmNlTG9hZEZhaWxlZDsKKworICAgICAgICAvLyBJZiB0aGUgZXZhbHVhdGlvbiByZXN1bHQg
aXMgYSBzdHJpbmcsIHRoZSBmcm9udGVuZCByZXR1cm5lZCBhbiBlcnJvciBzdHJpbmcuCisgICAg
ICAgIC8vIEFueXRoaW5nIGVsc2UgKGZhbHN5IHZhbHVlcywgb2JqZWN0cywgYXJyYXlzLCBET00s
IGV0Yy4pIGlzIGludGVycHJldGVkIGFzIHN1Y2Nlc3MuCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFs
RXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKworLy8gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIElQQyBtZXNzYWdlcy4KKwordm9pZCBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yRnJvbnRlbmQpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0
b3I8UmVmPEpTT046OlZhbHVlPj4gYXJndW1lbnRzIHsKKyAgICAgICAgSlNPTjo6VmFsdWU6OmNy
ZWF0ZShleHRlbnNpb25JRCksCisgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZGlzcGxheU5h
bWUpLAorICAgIH07CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZC0+ZnJvbnRlbmRBUElEaXNwYXRj
aGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJyZWdpc3RlckV4dGVuc2lvbiJf
cywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4
dERlc3Ryb3llZCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VJbnNwZWN0b3JFeHRlbnNpb25F
cnJvckZyb21SZXN1bHQocmVzdWx0LnZhbHVlKCkpKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChwYXJzZWRFcnJvci52YWx1ZSgpKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsK
KyAgICB9KTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnVu
cmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9pbnNwZWN0b3JGcm9udGVuZCkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZl
Y3RvcjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKGV4
dGVuc2lvbklEKSB9OworICAgIG1faW5zcGVjdG9yRnJvbnRlbmQtPmZyb250ZW5kQVBJRGlzcGF0
Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygidW5yZWdpc3RlckV4dGVuc2lv
biJfcywgV1RGTW92ZShhcmd1bWVudHMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oSW5zcGVjdG9y
RnJvbnRlbmRBUElEaXNwYXRjaGVyOjpFdmFsdWF0aW9uUmVzdWx0JiYgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhcmVzdWx0KSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29u
dGV4dERlc3Ryb3llZCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGF1dG8gcGFyc2VkRXJyb3IgPSB3ZWFrVGhpcy0+cGFyc2VJbnNwZWN0b3JFeHRlbnNp
b25FcnJvckZyb21SZXN1bHQocmVzdWx0LnZhbHVlKCkpKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChwYXJzZWRFcnJvci52YWx1ZSgpKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVl
KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTE5ZDI2ZTczNDZjNmM3YjQyOWUxNzNiM2IwMThhMTNh
ODQ4YzU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDcxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0
ZW5zaW9uVHlwZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnNw
ZWN0b3JVSTsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyCisgICAg
OiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCYpOworICAg
IH5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoKTsKKworICAgIC8vIEltcGxlbWVu
dGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKworICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlciBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9y
Pik+JiYpOworICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPik+JiYpOworCitwcml2YXRlOgorICAgIE9wdGlvbmFsPEluc3BlY3RvckV4
dGVuc2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbVJlc3VsdChKU0M6
OkpTVmFsdWUgcmVzdWx0KTsKKworICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+IG1faW5zcGVjdG9yRnJvbnRlbmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmM3OGVkNzVjY2MzYTk3NmVmZTc2MGNjYmY4ZDhjNjEwNDU0NjVjNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKworbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyIE5vdFJlZkNvdW50ZWQgeworICAgIFJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNp
b25JRCwgU3RyaW5nIGRpc3BsYXlOYW1lKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYworICAgIFVucmVnaXN0ZXJFeHRlbnNp
b24oU3RyaW5nIGV4dGVuc2lvbklEKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYworfQorCisjZW5kaWYgLy8gRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGYyOWIyZjc2YzBiMzJhMzllNmUwOGVlYjA2NDg3MmYxYjNhM2NlOGIu
LmEzYmYxMTcxYjUxNDRlMmZhMWNmZjZlNzFiYjhiZjYzNTQxODhmZjcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAy
MC0xMS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2Fd
IEluc3BlY3RvciBFeHRlbnNpb25zOiBBZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFuZCByZWxh
dGVkIHBsdW1iaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTc3ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5OTY4Nzg3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdHMgdG8g
ZXhlcmNpc2UgbmV3IG1ldGhvZHMgb2YgdGhlIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgcHJv
dG9jb2wuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogTmV3IHRlc3QgZmlsZS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbTogQWRkZWQuCisg
ICAgICAgIChyZXNldEdsb2JhbFN0YXRlKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZUZvclRlc3Rp
bmdJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9y
Ol0pOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMTEtMDMgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGVzdCBmb3IgY2FjaGVNb2RlbEZvck1haW5C
dW5kbGUoKSBpbiBXZWJLaXRMZWdhY3kKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWI1MDg5
MzY3NDNjZDEwMDI1M2IwNWE0MTNiMWQ2YWE1OTdiNzIyOC4uNmRjOTBhZTAwMWEzMWNlNTcyNWVj
Yzg0YjNkZDZjZTQ5Njg1YzRhYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTgzNSw2ICs4
MzUsNyBAQAogCQk5OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NEZB
Q0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSAqLzsgfTsKIAkJOTk4
NEZBQ0UxQ0ZGQjA5MDAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTg0RkFDRDFDRkZCMDM4
MDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovOyB9OwogCQk5OTk5MTA4QjFGMzkzQzk2
MDA4QUQ0NTUgLyogQ29weWluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5OTkxMDhBMUYzOTNDOEIwMDhBRDQ1NSAvKiBDb3B5aW5nLm1tICovOyB9
OworCQk5OTlCN0VFMzI1NTFDNjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk5QjdF
RTIyNTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSAqLzsgfTsK
IAkJOTlCNEY5QzYyNEVERUQ5NzAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUI0RjlDNTI0RURF
RDk2MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJOUIwMkUwRDYy
MzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBENTIzNUZBNDdEMDA0MDQ0QjIgLyog
VGV4dE1hbmlwdWxhdGlvbi5tbSAqLzsgfTsKIAkJOUIwNzg2QTUxQzU4ODVDMzAwRDE1OUUzIC8q
IEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwNzg2QTQxQzU4ODVDMzAw
RDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbl9CdW5kbGUuY3Bw
ICovOyB9OwpAQCAtMjQ0Niw2ICsyNDQ3LDcgQEAKIAkJOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThD
IC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLV2ViVmlld1RleHRJbnB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTk4NEZBQ0QxQ0ZGQjAzODAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJlZGl0YWJsZS1ib2R5Lmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29weWluZy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcHlpbmcubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBX
S0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5QjRGOUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVn
YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0
b3JEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwMkUwRDUyMzVG
QTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBUZXh0TWFuaXB1bGF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjA3
ODZBMjFDNTg4MzBGMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNP
cGVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVu
ZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNDA5LDYgKzM0MTEsNyBAQAogCQkJCTM3MENFMjI5MUY1NzM0MzQwMEU3NDEwQiAvKiBX
S0NvbnRlbnRWaWV3VGFyZ2V0Rm9yQWN0aW9uLm1tICovLAogCQkJCTUxRDEyNDk3MUU3NjNBRjgw
MDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSAqLywKIAkJCQk5OUI0RjlDNTI0RURFRDk2
MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAqLywKKwkJCQk5OTlCN0VFMjI1NTFD
NjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tICovLAogCQkJCUE1QTcy
OUYwMUY2MjJBOUEwMERFNUEyOCAvKiBXS05hdmlnYXRpb25SZXNwb25zZS5tbSAqLywKIAkJCQlE
RjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rpb25hcnlD
cmFzaC5tbSAqLywKIAkJCQkzNzVFMEUxNTFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5t
bSAqLywKQEAgLTU1NDIsNiArNTU0NSw3IEBACiAJCQkJNTFEMTI0OTgxRTc2M0IwMjAwMkIyODIw
IC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMUQxQTQx
MUFFNjAwNDQ3QzRDIC8qIFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTlCNEY5QzYyNEVERUQ5NzAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUu
bW0gaW4gU291cmNlcyAqLywKKwkJCQk5OTlCN0VFMzI1NTFDNjNCMDBGNDUwQTQgLyogV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVBNzI5RjExRjYyMkFB
NzAwREU1QTI4IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
REY0QjI3MzkyMUE0NzcyODAwOUJEMUNBIC8qIFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5
Q3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzVFMEUxNzFENjY2NzQ0MDBFRkVDMkMgLyog
V0tOU051bWJlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9z
dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZWRhY2Q3OWNkYWQ3NzhmOTM0YTA5Y2Q4OTQ1MDRkZWRhZGNhNjY4
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0KQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVXRp
bGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVj
dG9yLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKworc3RhdGljIGJvb2wgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxz
ZTsKK3N0YXRpYyBib29sIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworCitzdGF0
aWMgdm9pZCByZXNldEdsb2JhbFN0YXRlKCkKK3sKKyAgICBkaWRBdHRhY2hMb2NhbEluc3BlY3Rv
ckNhbGxlZCA9IGZhbHNlOworICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwor
fQorCitAaW50ZXJmYWNlIFVJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uSG9z
dCA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBVSURl
bGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbkhvc3QKKworLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjooX1dLSW5zcGVj
dG9yICopaW5zcGVjdG9yCit7CisgICAgRVhQRUNUX0VRKHdlYlZpZXcuX2luc3BlY3RvciwgaW5z
cGVjdG9yKTsKKyAgICBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IHRydWU7Cit9CisK
K0BlbmQKKworVEVTVChXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QsIFJlZ2lzdGVyRXh0ZW5zaW9u
KQoreworICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIHdlYlZp
ZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVk
ID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJW
aWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMo
W1VJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBuZXddKTsKKworICAg
IFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6QCI8aGVhZD48dGl0bGU+VGVzdCBwYWdlIHRvIGJlIGluc3BlY3RlZDwv
dGl0bGU+PC9oZWFkPjxib2R5PjxwPkZpbGxlciBjb250ZW50PC9wPjwvYm9keT4iIGJhc2VVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vIl1dOworCisgICAgW1t3
ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQpOworCisgICAgYXV0byBmaXJzdElEID0gW05T
VVVJRCBVVUlEXS5VVUlEU3RyaW5nOworICAgIGF1dG8gc2Vjb25kSUQgPSBbTlNVVUlEIFVVSURd
LlVVSURTdHJpbmc7CisKKyAgICAvLyBOb3JtYWwgcmVnaXN0cmF0aW9uLgorICAgIHBlbmRpbmdD
YWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdp
c3RlckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGRpc3BsYXlOYW1lOkAiRmlyc3RFeHRlbnNpb24i
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgeworICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb24pOworCisgICAgICAg
IHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisgICAgLy8gRG91
YmxlIHJlZ2lzdHJhdGlvbi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsK
KyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6Zmlyc3RJ
RCBkaXNwbGF5TmFtZTpAIkZpcnN0RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJy
b3IgKiBfTnVsbGFibGUgZXJyb3IsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBl
eHRlbnNpb24pIHsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQ
RUNUX05VTEwoZXh0ZW5zaW9uKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2Vycm9yLmxvY2FsaXpl
ZEZhaWx1cmVSZWFzb24gY29udGFpbnNTdHJpbmc6QCJSZWdpc3RyYXRpb25GYWlsZWQiXSk7CisK
KyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisKKyAg
ICAvLyBUd28gcmVnaXN0cmF0aW9ucy4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBm
YWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6
c2Vjb25kSUQgZGlzcGxheU5hbWU6QCJTZWNvbmRFeHRlbnNpb24iIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051
bGxhYmxlIGV4dGVuc2lvbikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
IEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb24pOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dh
c0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZw
ZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworfQorCitURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9u
SG9zdCwgVW5yZWdpc3RlckV4dGVuc2lvbikKK3sKKyAgICByZXNldEdsb2JhbFN0YXRlKCk7CisK
KyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBuZXddKTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNl
cy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBh
dXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4
dGVuc2lvbkhvc3QgbmV3XSk7CisKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdh
dGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGhlYWQ+PHRpdGxlPlRl
c3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L3RpdGxlPjwvaGVhZD48Ym9keT48cD5GaWxsZXIgY29u
dGVudDwvcD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4
YW1wbGUuY29tLyJdXTsKKworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBzaG93XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkKTsK
KworICAgIGF1dG8gZmlyc3RJRCA9IFtOU1VVSUQgVVVJRF0uVVVJRFN0cmluZzsKKyAgICBfX2Js
b2NrIFJldGFpblB0cjxfV0tJbnNwZWN0b3JFeHRlbnNpb24+IGZvdW5kRXh0ZW5zaW9uOworCisg
ICAgLy8gVW5yZWdpc3RlciBhIGtub3duIGV4dGVuc2lvbi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tX
YXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRl
bnNpb25XaXRoSUQ6Zmlyc3RJRCBkaXNwbGF5TmFtZTpAIkZpcnN0RXh0ZW5zaW9uIiBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIF9XS0luc3BlY3RvckV4dGVu
c2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0ZW5zaW9uKTsKKyAgICAgICAgZm91bmRFeHRl
bnNpb24gPSBleHRlbnNpb247CisKKyAgICAgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHVucmVn
aXN0ZXJFeHRlbnNpb246Zm91bmRFeHRlbnNpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihO
U0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CisKKyAgICAgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAg
ICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0Nh
bGxiYWNrV2FzQ2FsbGVkKTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoZm91bmRFeHRlbnNpb24uZ2V0
KCkpOworCisgICAgLy8gUmUtcmVnaXN0ZXIgYW4gZXh0ZW5zaW9uLgorICAgIHBlbmRpbmdDYWxs
YmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3Rl
ckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGRpc3BsYXlOYW1lOkAiRmlyc3RFeHRlbnNpb24iIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgeworICAgICAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb24pOworICAgICAgICBmb3Vu
ZEV4dGVuc2lvbiA9IGV4dGVuc2lvbjsKKworICAgICAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0g
dW5yZWdpc3RlckV4dGVuc2lvbjpmb3VuZEV4dGVuc2lvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKworICAgICAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsK
KyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5k
aW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworICAgIEVYUEVDVF9OT1RfTlVMTChmb3VuZEV4dGVuc2lv
bi5nZXQoKSk7CisKKyAgICAvLyBVbnJlZ2lzdGVyIGFuIGV4dGVuc2lvbiB0d2ljZS4KKyAgICBw
ZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rv
cl0gdW5yZWdpc3RlckV4dGVuc2lvbjpmb3VuZEV4dGVuc2lvbi5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05PVF9O
VUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2Vycm9yLmxvY2FsaXplZEZhaWx1cmVS
ZWFzb24gY29udGFpbnNTdHJpbmc6QCJJbnZhbGlkUmVxdWVzdCJdKTsKKworICAgICAgICBwZW5k
aW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKK30KKworI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413172</attachid>
            <date>2020-11-04 09:35:22 -0800</date>
            <delta_ts>2020-11-04 12:40:14 -0800</delta_ts>
            <desc>Patch v2.2</desc>
            <filename>bug-217783-20201104093521.patch</filename>
            <type>text/plain</type>
            <size>117297</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkOWZlMDcyNWRkZWMw
NGExZWJlZDhkYjgyMjRkY2I5ZTM3ZTdhMy4uMWEzYWEyMWI5ZmQwNGVlNmIxOWM0YjUzNjBlZDg3
ZWY4NTNkYTIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTExLTAzICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4
dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGV2aW4gUm91c3NvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aDoKKyAgICAgICAgSW4gb3JkZXIgZm9yIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ciB0byB3b3JrIHdpdGggcmVtb3RlIGFuZCBsb2NhbAorICAgICAgICBpbnNwZWN0b3JzLCBpdCBz
dG9yZXMgYSB3ZWFrIHBvaW50ZXIgdGhlIGluc3BlY3RvcidzIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LgorICAgICAgICBFeHBvc2UgdGhlIGZyb250ZW5kJ3MgcGFnZSBzbyB0aGF0IHRoZSBmcm9u
dGVuZCBBUEkgZGlzcGF0Y2hlciBjYW4gZGlzcGF0Y2ggdG8gaXQuCisKIDIwMjAtMTEtMDMgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgYWxpZ24taXRlbXMg
c2hvdWxkIGJlIGEgZGlzY3JldGUgYW5pbWF0YWJsZSBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKaW5kZXggYzAzYTUyYTExNTExOTAzZjI4N2RhOGYxZjg4MTE5OGU0NTM2ZjRhZS4uNjQ4
YWVjZGNmZDhiYzdjMWNiNDI3MDQxOWQzNDY1YzBkOWY3MmMyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMTAtMjIgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9X
S0luc3BlY3RvckV4dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82OTk2ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDogQWRkIG5ldyBmaWxlcy4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanM6Cisg
ICAgICAgIChXSS5BcHBDb250cm9sbGVyQmFzZSk6CisgICAgICAgIChXSS5BcHBDb250cm9sbGVy
QmFzZS5wcm90b3R5cGUuZ2V0IGV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICBIYW5nIHRo
ZSBleHRlbnNpb24gY29udHJvbGxlciBvZmYgb2YgdGhlIGdsb2JhbCBzaW5nbGV0b24sIGFzIHRo
ZXJlIGNhbiBvbmx5IGJlIG9uZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLldlYklu
c3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAo
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUudW5yZWdpc3RlckV4
dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3Igbm93LCBqdXN0IGtlZXAgdGhlIFVVSURzIGlu
IGEgbWFwIGFuZCBsb2cgdGhlIHJlc3VsdC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9k
ZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qczoKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4
dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24ucHJvdG90eXBlLmdl
dCBleHRlbnNpb25JRCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24ucHJvdG90
eXBlLmdldCBkaXNwbGF5TmFtZSk6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIGEgZGF0YSBvYmpl
Y3QgZm9yIG5vdy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9y
RnJvbnRlbmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxl
dGVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnJlZ2lzdGVyRXh0ZW5zaW9uKToK
KyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnVucmVnaXN0ZXJFeHRlbnNpb24pOgorICAg
ICAgICBBZGRlZC4gRm9yd2FyZCBpbnZvY2F0aW9ucyB0byB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xs
ZXIuCisKIDIwMjAtMTEtMDQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IHVzZSB3ZWFrIGNvbGxlY3Rpb25zIGZvciBob2xkaW5nIGV2
ZW50IGxpc3RlbmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMzA2ODA2YmRjYzYwYmUyMGFmNmE0YWEzYmUzYjlm
MmU5ZDdmYjFiLi5mZTQ2ZDFhM2QzOThlZGM4M2FlOGE2MzNlNDlhNjZlNjI5NjIxOTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAyMC0xMC0yMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEluc3BlY3RvciBFeHRlbnNpb25zOiBBZGQgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uIGFuZCByZWxhdGVkIHBsdW1iaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3ODMKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5OTY4Nzg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKwor
ICAgICAgICBfV0tJbnNwZWN0b3JFeHRlbnNpb24gaXMgbmV3IFNQSSB0aGF0IHJlcHJlc2VudHMg
YSBXZWIgRXh0ZW5zaW9uIHRoYXQgdXNlcyB0aGUgJ2RldnRvb2xzJworICAgICAgICBBUEkgdG8g
aW50ZXJhY3Qgd2l0aCBXZWIgSW5zcGVjdG9yLiBBbiBleHRlbnNpb24gaXMgYXNzb2NpYXRlZCB3
aXRoIGl0cyBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LgorICAgICAgICBBIFdlYktpdCBjbGll
bnQgdGhhdCBzdXBwb3J0cyBXZWIgRXh0ZW5zaW9ucyBjYW4gdXNlIHRoaXMgY2xhc3MgdG8gaW1w
bGVtZW50ICdkZXZ0b29scycgZXh0ZW5zaW9uIEFQSXMuCisKKyAgICAgICAgQWRkIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcyB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBhbiBl
eHRlbnNpb24uCisgICAgICAgIEFkZCBwbHVtYmluZyBzbyB0aGF0IHRoZSBleHRlbnNpb24gaW4g
cmVnaXN0ZXJlZCBpbiB0aGUgZnJvbnRlbmQgd2l0aCBXSS5JbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyLgorCisgICAgICAgIExhdGVyIHBhdGNoZXMgd2lsbCBmbGVzaCBvdXQgdGhlIG5lZWRl
ZCBmdW5jdGlvbmFsaXR5IHRvIGltcGxlbWVudCByZXN0IG9mIHRoZSAnZGV2dG9vbHMnIEFQSS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6
IElmIGEgbWVzc2FnZSBpbmNsdWRlcyBJbnNwZWN0b3JFeHRlbnNpb25FcnJvciwKKyAgICAgICAg
dGhlbiBnZW5lcmF0ZSBhbiBpbmNsdWRlIGZvciBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIHdo
ZXJlIGl0IGlzIGRlY2xhcmVkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoK
KyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmpl
Y3Q6Om5ld09iamVjdCk6CisgICAgICAgIE5ldyBBUEkgb2JqZWN0IHR5cGUuCisKKyAgICAgICAg
KiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaDogQWRkZWQgZXJyb3IgY29kZSBlbnVt
IGFuZCB1c2VmdWwgdHlwZSBhbGlhc2VzLgorICAgICAgICAqIFNoYXJlZC9JbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9y
VG9TdHJpbmcpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHA6
CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKEFQ
STo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpJbnNwZWN0b3JFeHRlbnNpb24pOgorICAgICAgICAoQVBJ
OjpJbnNwZWN0b3JFeHRlbnNpb246On5JbnNwZWN0b3JFeHRlbnNpb24pOgorICAgICAgICBBZGRl
ZC4gVGhpcyBpcyBhIHBsYWNlaG9sZGVyIG9iamVjdCB0aGF0J3MgdXNlZCBmb3IgdGhlIHdyYXBw
ZXIgc3lzdGVtLAorICAgICAgICBzaW5jZSB3ZSBkb24ndCBoYXZlIHNpbmdsZSBDKysgb2JqZWN0
cyBmb3IgZWFjaCBleHRlbnNpb24gdG8gYmFjayB0aGUgQVBJIG9iamVjdC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciByZWdp
c3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bX1dLSW5zcGVjdG9yIHVucmVnaXN0ZXJFeHRlbnNpb246Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgIEltcGxlbWVudCBuZXcgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBt
ZXRob2RzLiBTZW5kIElQQyB0byB0aGUgSW5zcGVjdG9yIHdlYiBwcm9jZXNzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAg
KC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGluaXRXaXRoSWRlbnRpZmllcjpdKToKKyAgICAgICAg
KC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uIF9hcGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uIGV4dGVuc2lvbklEXSk6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIGEgZGF0YSBvYmplY3Qg
dGhhdCdzIGFsc28gdXNlZCBhcyBhIHRva2VuIHRvIHVucmVnaXN0ZXIgdGhlIGV4dGVuc2lvbi4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9z
dC5oOiBBZGQgbmV3IFNQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckV4dGVuc2lvbkludGVybmFsLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAg
ICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgcmVnaXN0ZXJFeHRl
bnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHVucmVnaXN0ZXJFeHRlbnNpb246
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEltcGxlbWVudCBuZXcgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSG9zdCBtZXRob2RzLiBTZW5kIElQQyB0byB0aGUgSW5zcGVjdG9yIHdlYiBwcm9j
ZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkubWVzc2FnZXMuaW46IEFkZCBGcm9udGVuZExvYWRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmV4dGVuc2lvbkNvbnRyb2xsZXIgY29uc3QpOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5k
TG9hZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0
ZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgIFNldCB1cCB0aGUgZXh0ZW5zaW9uIGNv
bnRyb2xsZXIgb2JqZWN0IGFmdGVyIHRoZSBmcm9udGVuZCBoYXMgYmVlbiBjcmVhdGVkLgorICAg
ICAgICBIb29rIHVwIHRoZSBGcm9udGVuZExvYWRlZCBldmVudCBzZW50IGZyb20gSW5zcGVjdG9y
IHdlYiBwcm9jZXNzIHNvIHRoYXQgdGhlCisgICAgICAgIGV4dGVuc2lvbiBjb250cm9sbGVyIGNh
biBiZSBub3RpZmllZCBvZiB3aGVuIGl0J3Mgc2FmZSB0byBtZXNzYWdlIHRoZSBmcm9udGVuZC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5k
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kTG9h
ZGVkKToKKyAgICAgICAgU2V0IHVwIHRoZSBleHRlbnNpb24gY29udHJvbGxlciBvYmplY3QgYWZ0
ZXIgdGhlIGZyb250ZW5kIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5OjpleHRlbnNpb25Db250cm9sbGVyIGNvbnN0KTogQWRkZWQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjppbnNwZWN0b3JGcm9udGVuZExvYWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojpy
ZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgQWRkZWQu
IEZvcndhcmQgQVBJIHJlcXVlc3RzIHRvIHRoZSBXZWIgSW5zcGVjdG9yJ3Mgd2ViIHByb2Nlc3Mg
dG8gYmUgZXZhbHVhdGVkIGluIHRoZSBmcm9udGVuZC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hDb21tYW5kKToKKyAgICAgICAgQWRkIGEgbW9yZSBnZW5lcmljIHdheSB0byBlbmNv
ZGUgdmFsdWVzIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gSW5zcGVjdG9yRnJvbnRlbmRB
UEkuZGlzcGF0Y2guCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRQYWdlIGNvbnN0KTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpmcm9udGVuZEFQSURpc3BhdGNoZXIpOiBB
ZGRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3RlckV4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21SZXN1bHQpOgorICAgICAgICBIYW5kbGUgaW5jb21p
bmcgbWVzc2FnZXMgYnkgZm9yd2FyZGluZyB0aGUgYXNzb2NpYXRlZCBjb21tYW5kIHRvIFdJLldl
YkV4dGVuc2lvbkNvbnRyb2xsZXIKKyAgICAgICAgdmlhIEluc3BlY3RvckZyb250ZW5kQVBJIGV2
YWx1YXRpb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVT
aGVldC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQu
bW06CisgICAgICAgIEZhbGxvdXQgZnJvbSB1bmlmaWVkIGJ1aWxkIGNodW5raW5nIHNoaWZ0cy4K
KwogMjAyMC0xMS0wMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAg
ICBTZXQgdXAgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgZm9yIFNwZWVjaFJlY29nbml0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmlu
ZGV4IDBhNzlkODZiM2M0Njk3NzgxNGE2OGY0ZWFhZWRiOGE4ZWU5ZmZiYTMuLmU4ZDEzYTIxMWUw
NjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zNiwxNCArMzYsMTYgQEAK
ICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dhYmxlVHlwZS5oIgogI2luY2x1ZGUgIlVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyOworY2xhc3MgUGFnZTsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQgeworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IHsKIHB1YmxpYzoKICAgICBlbnVtIGNs
YXNzIERvY2tTaWRlIHsKICAgICAgICAgVW5kb2NrZWQgPSAwLApAQCAtMTExLDYgKzExMyw3IEBA
IHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRv
QmFja2VuZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXImIGZyb250ZW5kQVBJRGlzcGF0Y2hlcigpID0g
MDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhZ2UqIGZyb250ZW5kUGFnZSgpID0gMDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBpc1VuZGVyVGVzdCgpID0gMDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuaAppbmRleCAxMTgxYTIwOTZjMTc2MGRmMjI5MzI2MDEwNmM1ZDA5NWM0MWQz
NDFhLi5hZDE4ZjYwODA1ZDFjZTE2ZTY5NDJlZjMyNzAyOTk0ODQ1OWFlNzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmgKQEAgLTk1LDcgKzk1LDggQEAgcHVibGljOgogICAgIFN0cmluZyBiYWNrZW5kQ29tbWFu
ZHNVUkwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdHJpbmcoKTsgfTsKIAogICAgIEluc3BlY3Rv
ckZyb250ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgZmluYWwgeyBy
ZXR1cm4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7IH0KLQorICAgIFBhZ2UqIGZyb250ZW5kUGFn
ZSgpIGZpbmFsIHsgcmV0dXJuIG1fZnJvbnRlbmRQYWdlOyB9CisgICAgCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dERvY2tpbmdVbmF2YWlsYWJsZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9s
bGVyQmFzZS5qcwppbmRleCA2MWQ0YzQ1OTQ0ZGI2Njk1NWQwMDA5NzNhM2U2ZGVhM2FlNjZlYTU2
Li4wMDI1Mzc0Yjc4ZDcwYzA3ZmZmZDhiYjNlNGFlMTJlMDM4OGViZjYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9s
bGVyQmFzZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qcwpAQCAtNDEsMTEgKzQxLDE0IEBAIFdJLkFwcENv
bnRyb2xsZXJCYXNlID0gY2xhc3MgQXBwQ29udHJvbGxlckJhc2UKICAgICBjb25zdHJ1Y3Rvcigp
CiAgICAgewogICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlOworCisgICAgICAgIHRo
aXMuX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBuZXcgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29u
dHJvbGxlcjsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBkZWJ1Z2dhYmxlVHlw
ZSgpIHsgdGhyb3cgV0kuTm90SW1wbGVtZW50ZWRFcnJvci5zdWJjbGFzc011c3RPdmVycmlkZSgp
OyB9CisgICAgZ2V0IGV4dGVuc2lvbkNvbnRyb2xsZXIoKSB7IHJldHVybiB0aGlzLl9leHRlbnNp
b25Db250cm9sbGVyOyB9CiAKICAgICAvLyBTaW5jZSB2YXJpb3VzIG1lbWJlcnMgb2YgdGhlIGFw
cCBjb250cm9sbGVyIGRlcGVuZCBvbiB0aGUgZ2xvYmFsIHNpbmdsZXRvbiB0byBleGlzdCwKICAg
ICAvLyBzb21lIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgYXBwIGNv
bnRyb2xsZXIgaGFzIGJlZW4gY29uc3RydWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25D
b250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmUz
OTZjMzQyNGY2MjQ3ZTAxYTBmYWY1MDljM2JiMjk3NzliMWVlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4
dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcigp
CisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbklETWFw
ID0gbmV3IE1hcDsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHJlZ2lzdGVyRXh0ZW5z
aW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9l
eHRlbnNpb25JRE1hcC5oYXMoZXh0ZW5zaW9uSUQpKSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJ
bnRlcm5hbEVycm9yKCJVbmFibGUgdG8gcmVnaXN0ZXIgZXh0ZW5zaW9uLCBpdCdzIGFscmVhZHkg
cmVnaXN0ZXJlZDogIiwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lKTsKKyAgICAgICAgICAgIHJl
dHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLlJlZ2lzdHJhdGlvbkZhaWxl
ZDsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBleHRlbnNpb24gPSBuZXcgV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CisgICAgICAgIHRoaXMuX2V4
dGVuc2lvbklETWFwLnNldChleHRlbnNpb25JRCwgZXh0ZW5zaW9uKTsKKworICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9s
bGVyLkV2ZW50LkV4dGVuc2lvbkFkZGVkLCB7ZXh0ZW5zaW9ufSk7CisgICAgfQorCisgICAgdW5y
ZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCkKKyAgICB7CisgICAgICAgIGxldCBleHRlbnNp
b24gPSB0aGlzLl9leHRlbnNpb25JRE1hcC50YWtlKGV4dGVuc2lvbklEKTsKKyAgICAgICAgaWYg
KCFleHRlbnNpb24pIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJs
ZSB0byB1bnJlZ2lzdGVyIGV4dGVuc2lvbiB3aXRoIHVua25vd24gSUQ6ICIsIGV4dGVuc2lvbklE
KTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2Rl
LkludmFsaWRSZXF1ZXN0OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudC5FeHRl
bnNpb25SZW1vdmVkLCB7ZXh0ZW5zaW9ufSk7CisgICAgfQorfTsKKworV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudCA9IHsKKyAgICBFeHRlbnNpb25BZGRlZDogImV4dGVu
c2lvbi1hZGRlZCIsCisgICAgRXh0ZW5zaW9uUmVtb3ZlZDogImV4dGVuc2lvbi1yZW1vdmVkIiwK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5k
ZXggZmFlM2NmODcyNmMwODc3NmVmMDMyYTVmYTQ5YmI1MjZkZWM0NTBiOC4uYjg2ZGY1ZmYwNTll
ZWJmODBlMDMyNDlmOGYzMzhjNTk1YjNlZDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtNDg0LDYgKzQ4NCw3IEBACiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9UeXBlRGVzY3JpcHRpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvVHlwZVNldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9VUkxCcmVha3BvaW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dl
Ykluc3BlY3RvckV4dGVuc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9XZWJTb2NrZXRSZXNvdXJjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9XcmFwcGVkUHJvbWlzZS5qcyI+PC9zY3JpcHQ+CiAKQEAgLTg5OCw2ICs4OTksNyBAQAogICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1dv
cmtlck1hbmFnZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L0RpYWdub3N0aWNDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYmNhMTBjZGMyMjFkMWI1MWM5YmM3YmI4OTk3
OWE3MDg0MTc0YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCkBAIC0wLDAgKzEsNTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24gPSBjbGFzcyBXZWJJbnNw
ZWN0b3JFeHRlbnNpb24KK3sKKyAgICBjb25zdHJ1Y3RvcihleHRlbnNpb25JRCwgZGlzcGxheU5h
bWUpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5
cGVvZiBleHRlbnNpb25JRCA9PT0gInN0cmluZyIsIGV4dGVuc2lvbklEKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodHlwZW9mIGRpc3BsYXlOYW1lID09PSAic3RyaW5nIiwgZGlzcGxheU5hbWUp
OworCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbklEID0gZXh0ZW5zaW9uSUQ7CisgICAgICAgIHRo
aXMuX2Rpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7CisgICAgfQorCisgICAgLy8gUHVibGljCisK
KyAgICBnZXQgZXh0ZW5zaW9uSUQoKSB7IHJldHVybiB0aGlzLl9leHRlbnNpb25JRDsgfQorICAg
IGdldCBkaXNwbGF5TmFtZSgpIHsgcmV0dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOyB9Cit9OworCisv
LyBOb3RlOiB0aGVzZSB2YWx1ZXMgYXJlIHN5bm9ueW1vdXMgd2l0aCB0aGUgdmFsdWVzIG9mIGVu
dW0gY2xhc3MgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvci4KK1dJLldlYkluc3BlY3Rv
ckV4dGVuc2lvbi5FcnJvckNvZGUgPSB7CisgICAgQ29udGV4dERlc3Ryb3llZDogIkNvbnRleHRE
ZXN0cm95ZWQiLAorICAgIEludGVybmFsRXJyb3I6ICJJbnRlcm5hbEVycm9yIiwKKyAgICBJbnZh
bGlkUmVxdWVzdDogIkludmFsaWRSZXF1ZXN0IiwKKyAgICBSZWdpc3RyYXRpb25GYWlsZWQ6ICJS
ZWdpc3RyYXRpb25GYWlsZWQiLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanMKaW5kZXggMWQxZjI4OGJiODM0ZDQ4MmY2NGUzOWVmMGZiZDUzODZkODc0ZGVmMC4uZjlk
MjBhZjExZjQ2Y2NkZWQ2NWQzZGMxYTliNDY4M2JmNGFkNmQ5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yRnJvbnRlbmRB
UEkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
SW5zcGVjdG9yRnJvbnRlbmRBUEkuanMKQEAgLTE5Niw1ICsxOTYsMTcgQEAgSW5zcGVjdG9yRnJv
bnRlbmRBUEkgPSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEFQSS5kaXNwYXRjaChJ
bnNwZWN0b3JGcm9udGVuZEFQSS5fcGVuZGluZ0NvbW1hbmRzW2ldKTsKIAogICAgICAgICBkZWxl
dGUgSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kczsKLSAgICB9CisgICAgfSwK
KworICAgIC8vIFJldHVybnMgYSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlIGlm
IGFuIGVycm9yIG9jY3VycmVkLCBvdGhlcndpc2Ugbm90aGluZy4KKyAgICByZWdpc3RlckV4dGVu
c2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gV0ku
c2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9u
SUQsIGRpc3BsYXlOYW1lKTsKKyAgICB9LAorCisgICAgLy8gUmV0dXJucyBhIFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbi5FcnJvckNvZGUgaWYgYW4gZXJyb3Igb2NjdXJyZWQsIG90aGVyd2lzZSBu
b3RoaW5nLgorICAgIHVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQpCisgICAgeworICAg
ICAgICByZXR1cm4gV0kuc2hhcmVkQXBwLmV4dGVuc2lvbkNvbnRyb2xsZXIudW5yZWdpc3RlckV4
dGVuc2lvbihleHRlbnNpb25JRCk7CisgICAgfSwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggOGI4NDYyZjg5NDdjYTk1NTFjYjdlM2Y2
YWU0ODk2Mzc5NDMzYmQxZS4uMzMzMjRhYzRkOTIzYWRlMDA1MWQ1ZjkyZDJmMzg1M2YzNGM5MmFh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5o
dG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApA
QCAtMjIwLDYgKzIyMCw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9UaW1lbGluZU1hcmtl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9UaW1lbGluZVJlY29yZGlu
Zy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9VUkxCcmVha3BvaW50Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lv
bi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XZWJTb2NrZXRSZXNvdXJj
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVkUHJvbWlzZS5q
cyI+PC9zY3JpcHQ+CiAKQEAgLTI2Myw2ICsyNjQsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250
cm9sbGVycy9SdW50aW1lTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvV29ya2VyTWFuYWdlci5qcyI+PC9zY3Jp
cHQ+CiAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUmVzb3VyY2VRdWVyeUNvbnRyb2xs
ZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CmluZGV4IDY5NDBmZDQxMjVmOTY0NzRmZTRjMWRhNjJlMThiMDYxMjFjNWQxNGMu
LmFiMTVmYmY1MWVmMzY4ZmJlNDc0NTM0MGQyNjE3YzJmNzM4YmMwYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTk1LDYgKzk1LDcgQEAg
JChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4K
ICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9NZWRpYS9BdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRy
YXRvclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkubWVzc2FnZXMu
aW4KQEAgLTE0Miw2ICsxNDMsNyBAQCAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0dQVS93ZWJy
dGMvU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUku
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3Rvci5tZXNzYWdlcy5pbgorJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLm1l
c3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZl
ZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggODJmNjc2N2ExOWY5MzFhNmM1Y2QwYjkx
YjViZDA4ODNjYjc3YzVhOS4uNGViMTI1ZTlhZGM3NjVhNWFlOGRjMTE3NTg3ZWUzZTg3Yzc3YTQz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CkBAIC0zNDgsNiArMzQ4LDkgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXNSZXAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VSZWNl
aXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dl
YklEQlNlcnZlck1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYklEQlNlcnZlck1lc3NhZ2VzUmVwbGllcy5oCiskKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0
Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJLaXQyL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlcy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JJ
bnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXNSZXBsaWVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCAzYzk4NzllMmFjZGFmOTcyNDQyMWU0ZjVjYTdlODJjZmU3NjY3ZjdkLi5hNzZi
Mzk2ZmUwNTEzOTg3MGExYjAxYzE0YzE0MWRjZjQ1YTkyYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC0xODQsNiArMTg0LDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAJV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIgXAogCVdlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIgXAogCVdlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJIFwKKwlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgXAogCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvciBcCiAJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkg
XAogCVdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNzI2ODcyZDY4ZDk1
N2YwODliNzcxYTNkNTU1OWEyMzExZGIzMDVlNi4uYzFhZTk2YzdjYTI5NWMzZTVlYmViNzViM2Mz
YzM0MjY5NTE0MTc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC02NzMsNiArNjczLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAg
ICdXZWJLaXQ6OkZpbmRPcHRpb25zJzogWyciV2ViRmluZE9wdGlvbnMuaCInXSwKICAgICAgICAg
J1dlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpHZXN0dXJlVHlwZSc6IFsnIkdlc3R1cmVUeXBlcy5oIiddLAorICAg
ICAgICAnV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcic6IFsnIkluc3BlY3RvckV4dGVu
c2lvblR5cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ0NvbnRleHRJRCc6
IFsnIkxheWVySG9zdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0
aW5nTW9kZSc6IFsnIkxheWVyVHJlZUNvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6UGFn
ZVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKaW5kZXggNmQwNjU2NDVkY2VlNjJlNTlkNTBkYmVmMzc0MzVhNDlhODBlYjY4Mi4uYjdi
N2VlNjg4YWE2ZmY4OTA1YTIxYjc3OGQ0ZDk2MzUyMjUxNjM5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaApAQCAtMTM3LDYgKzEzNyw5IEBAIHB1YmxpYzoKICAgICAgICAgSWNv
bkRhdGFiYXNlLAogICAgICAgICBJbnNwZWN0b3IsCiAgICAgICAgIEluc3BlY3RvckNvbmZpZ3Vy
YXRpb24sCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgICAgICBJbnNwZWN0
b3JFeHRlbnNpb24sCisjZW5kaWYKICAgICAgICAgS2V5VmFsdWVTdG9yYWdlTWFuYWdlciwKICAg
ICAgICAgTWVkaWFDYWNoZU1hbmFnZXIsCiAgICAgICAgIE1lc3NhZ2VMaXN0ZW5lciwKQEAgLTM4
Miw2ICszODUsOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPEFQSTo6T2JqZWN0OjpU
eXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJY29uRGF0YWJhc2UsCiAgICAgICAg
IEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3IsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBl
OjpJbnNwZWN0b3JDb25maWd1cmF0aW9uLAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Okluc3BlY3RvckV4dGVuc2lvbiwKKyNlbmRp
ZgogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6S2V5VmFsdWVTdG9yYWdlTWFuYWdlciwKICAg
ICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lZGlhQ2FjaGVNYW5hZ2VyLAogICAgICAgICBBUEk6
Ok9iamVjdDo6VHlwZTo6TWVzc2FnZUxpc3RlbmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tCmluZGV4IGM5NDIwY2Q1ZjIwZGIxMTk5YTJmZjBhNTM1Y2UwMDljZjkyODY1
YTQuLmY4YTAyOGIwNmI1MTA2MTA4ZGRjM2NiYjY4YTQwMWJmYTM1ZjdkYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTk5LDYgKzk5LDEwIEBACiAjaW1wb3J0
ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCIKICNlbmRpZgogCisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50
ZXJuYWwuaCIKKyNlbmRpZgorCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbmltdW1PYmplY3RBbGln
bm1lbnQgPSBhbGlnbm9mKHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCk+Ojp0eXBlKTsKIHN0YXRpY19hc3NlcnQobWluaW11bU9iamVjdEFsaWdu
bWVudCA+PSBhbGlnbm9mKHZvaWQqKSwgIk9iamVjdHMgc2hvdWxkIGFsd2F5cyBiZSBhdCBsZWFz
dCBwb2ludGVyLWFsaWduZWQuIik7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1FeHRyYVNw
YWNlRm9yQWxpZ25tZW50ID0gbWluaW11bU9iamVjdEFsaWdubWVudCAtIGFsaWdub2Yodm9pZCop
OwpAQCAtMjcwLDYgKzI3NCwxMiBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6
ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0gW19XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24gYWxsb2NdOwogICAgICAgICBicmVhazsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKyAgICBjYXNlIFR5cGU6Okluc3BlY3RvckV4dGVuc2lvbjoKKyAgICAgICAgd3JhcHBl
ciA9IFtfV0tJbnNwZWN0b3JFeHRlbnNpb24gYWxsb2NdOworICAgICAgICBicmVhazsKKyNlbmRp
ZgorCiAgICAgY2FzZSBUeXBlOjpOYXZpZ2F0aW9uOgogICAgICAgICB3cmFwcGVyID0gW1dLTmF2
aWdhdGlvbiBhbGxvY107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmNjJkM2Q4MjFlOWE2
ZDhhMDJkZjk5YTA0NGJjN2JiYjkwM2ZiZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9JbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXVEY6
OlN0cmluZyBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yIGVycm9yKQoreworICAgIHN3aXRjaCAoZXJyb3IpIHsKKyAgICBjYXNlIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOgorICAgICAgICByZXR1cm4gIkludGVybmFs
RXJyb3IiX3M7CisgICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVl
c3Q6CisgICAgICAgIHJldHVybiAiSW52YWxpZFJlcXVlc3QiX3M7CisgICAgY2FzZSBJbnNwZWN0
b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ryb3llZDoKKyAgICAgICAgcmV0dXJuICJDb250
ZXh0RGVzdHJveWVkIl9zOworICAgIGNhc2UgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OlJlZ2lz
dHJhdGlvbkZhaWxlZDoKKyAgICAgICAgcmV0dXJuICJSZWdpc3RyYXRpb25GYWlsZWQiX3M7Cisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICJJbnRlcm5hbEVy
cm9yIjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9JbnNw
ZWN0b3JFeHRlbnNpb25UeXBlcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0
ZW5zaW9uVHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjNmNWViZmI4ZDE3MDUyZDBiMzZlYTI3NGNjZmY1
ZDcwMzY1YTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVj
dG9yRXh0ZW5zaW9uVHlwZXMuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgSW5zcGVjdG9yRXh0
ZW5zaW9uVGFiSUQgPSBXVEY6OlN0cmluZzsKK3VzaW5nIEluc3BlY3RvckV4dGVuc2lvbklEID0g
V1RGOjpTdHJpbmc7CisKK2VudW0gY2xhc3MgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IgOiB1aW50
OF90IHsKKyAgICBDb250ZXh0RGVzdHJveWVkLAorICAgIEludGVybmFsRXJyb3IsCisgICAgSW52
YWxpZFJlcXVlc3QsCisgICAgUmVnaXN0cmF0aW9uRmFpbGVkLAorfTsKKworV1RGOjpTdHJpbmcg
aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhJbnNwZWN0b3JFeHRlbnNpb25FcnJvcik7
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JF
eHRlbnNpb25FcnJvciwKKyAgICAgICAgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
SW52YWxpZFJlcXVlc3QsCisgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OkNvbnRleHREZXN0cm95ZWQsCisgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I6OlJlZ2lzdHJhdGlvbkZhaWxlZAorICAgID47Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBkNTI3OWZlNjIyOTYzZjA3
NDczOGFjMWVlNTRjMzc0ZGNiZTdiNTI3Li4zNTFhZjQyNzhjOTg1OTU5YWVjZmIxNWRiZjBhYjdj
YjVlMjA0Yjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTE2MSw2ICsxNjEsNyBAQCBTaGFyZWQvRWRpdGlu
Z1JhbmdlLmNwcAogU2hhcmVkL0VkaXRvclN0YXRlLmNwcAogU2hhcmVkL0ZvbnRJbmZvLmNwcAog
U2hhcmVkL0ZyYW1lSW5mb0RhdGEuY3BwCitTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMu
Y3BwCiBTaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5jcHAKIFNoYXJlZC9Mb2FkUGFyYW1ldGVycy5j
cHAKIFNoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAKQEAgLTQzNyw2ICs0MzgsNyBAQCBV
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvSW5z
cGVjdG9yVGFyZ2V0UHJveHkuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAK
K1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHAKIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZURlYnVnZ2FibGUuY3BwCiBVSVByb2Nlc3MvSW5zcGVj
dG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNTUwLDYgKzU1Miw3IEBAIFdl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rvci5jcHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvckNsaWVudC5jcHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
ckludGVycnVwdERpc3BhdGNoZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSS5jcHAKK1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5jcHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQu
Y3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxl
ci5jcHAKIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXRGcm9udGVu
ZENoYW5uZWwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggOTliZWExZmI1OWU5NmQ2YTAw
ZWYxYmJhMDhhNzI0YjFmMjg4NzAwNC4uNjA1ZWE4M2YxMGQ0YjBhY2Q3YTM0NmZjMTNlMjdiNTRk
NmVmODUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjU5LDYgKzI1OSw3IEBAIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
VGVzdGluZy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5m
by5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yV2luZG93Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0ludGVybmFsRGVidWdGZWF0dXJlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0xpbmtJ
Y29uUGFyYW1ldGVycy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluc3BlY3RvckV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUluc3BlY3RvckV4dGVuc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMGYxOGFmZTJjOTRlYzk3NTI3ZjZi
N2FmYjQwZGFjZWVlMDQ4MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFt
ZXNwYWNlIEFQSSB7CisKK2NsYXNzIEluc3BlY3RvckV4dGVuc2lvbiBmaW5hbCA6IHB1YmxpYyBB
UEk6Ok9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPEluc3BlY3RvckV4dGVuc2lvbj4gY3JlYXRlKGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SW5zcGVjdG9yRXh0ZW5zaW9uKGlkZW50aWZpZXIpKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBJ
bnNwZWN0b3JFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAg
IDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisK
K3ByaXZhdGU6CisgICAgV1RGOjpTdHJpbmcgbV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgQVBJCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLmgKaW5kZXgg
MTg5OWU4MThiMzYzZTg1ZDQ2MGIzMDk3M2I0YWEwZDQ4ODk5NTk5ZS4uODZiMWNmODk2Mjc4ZjE5
NzJiOWE3OTk3YzQ5Mjc0ZDFlZWRjY2Y1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaApAQCAtMjUsMTcgKzI1LDE1IEBACiAKICNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaD4KKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdLV2ViVmlldzsKIEBjbGFzcyBfV0tGcmFt
ZUhhbmRsZTsKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CiBAcHJvdG9jb2wgX1dLSW5z
cGVjdG9yRGVsZWdhdGU7CiAKLU5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCi0KLUBwcm90b2NvbCBf
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Ci0tICh2b2lkKWNsb3NlOwotQGVuZAotCiBXS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkKIEBpbnRlcmZhY2UgX1dLSW5z
cGVjdG9yIDogTlNPYmplY3QgPF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3Q+CiAKQEAgLTUyLDYg
KzUwLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpCiAK
IC0gKHZvaWQpY29ubmVjdDsKIC0gKHZvaWQpc2hvdzsKKy0gKHZvaWQpY2xvc2U7CiAtICh2b2lk
KWhpZGU7CiAtICh2b2lkKXNob3dDb25zb2xlOwogLSAodm9pZClzaG93UmVzb3VyY2VzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KaW5k
ZXggNjczNDExZjMwZWYxZDEwOGUxZDQ0NDc0MTk0YmNjYThmOTNkMWY2Yi4uNmMwMGI5NmRkMTk1
ZDAxOGY2ZjM2MzI5N2I4ZTlhZjQzNjZjNGVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1w
b3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogCiAjaW1wb3J0ICJJbnNwZWN0b3JEZWxlZ2F0
ZS5oIgorI2ltcG9ydCAiV0tFcnJvci5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCkBA
IC0zNyw2ICszOCwxMyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisj
aW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKKyNpbXBvcnQgIldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNp
b25JbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjZW5kaWYKKwogQGltcGxl
bWVudGF0aW9uIF9XS0luc3BlY3RvcgogCiAvLyBNQVJLOiBfV0tJbnNwZWN0b3IgbWV0aG9kcwpA
QCAtMTk0LDQgKzIwMiwzOCBAQCAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogICAgIHJldHVy
biAqX2luc3BlY3RvcjsKIH0KIAorLy8gTUFSSzogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBt
ZXRob2RzCisKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0
ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgX2lu
c3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lv
bklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRyKGV4dGVu
c2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6
Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAo
IXJlc3VsdCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhE
b21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9j
YWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3Ry
aW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Okluc3BlY3Rv
ckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpKSkgcmV0YWluXSBh
dXRvcmVsZWFzZV0pOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNF
cnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVz
ZXJJbmZvOm5pbF0sIG5pbCk7CisjZW5kaWYKK30KKworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5z
aW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKKyAgICBfaW5zcGVjdG9yLT5leHRlbnNpb25Db250cm9sbGVyKCku
dW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxm
ID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRp
b25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAg
ICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNv
ZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJy
b3JLZXk6IGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FwdHVyZWRCbG9j
ayhuaWwpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
Om5pbF0pOworI2VuZGlmCit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YzVhNjAxZWQyY2YzMTRlN2E4YmY4NjIzOWU4MGI0YjFhYTliYzgwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lv
bi5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQor
QGludGVyZmFjZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24gOiBOU09iamVjdAorCistIChpbnN0YW5j
ZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKKworQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRv
bWljKSBOU1N0cmluZyAqZXh0ZW5zaW9uSUQ7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExf
RU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckV4dGVuc2lvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjdkZTk0M2Q1YWMzMTMxZmQxNTdm
YzhmYjU4NTlmMTI3MTg0MTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbQpAQCAtMCwwICsxLDY5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JF
eHRlbnNpb25JbnRlcm5hbC5oIgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW1wbGVt
ZW50YXRpb24gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5n
ICopZXh0ZW5zaW9uSUQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIEFQSTo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJ
OjpJbnNwZWN0b3JFeHRlbnNpb24+KHNlbGYsIGV4dGVuc2lvbklEKTsKKyAgICAKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX2V4dGVuc2lvbi0+QVBJOjpJ
bnNwZWN0b3JFeHRlbnNpb246On5JbnNwZWN0b3JFeHRlbnNpb24oKTsKKworICAgIFtzdXBlciBk
ZWFsbG9jXTsKK30KKworCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVy
biAqX2V4dGVuc2lvbjsKK30KKworLy8gTUFSSzogUHJvcGVydGllcy4KKworLSAoTlNTdHJpbmcg
KilleHRlbnNpb25JRAoreworICAgIHJldHVybiBfZXh0ZW5zaW9uLT5pZGVudGlmaWVyKCk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK0BlbmQKKworTlNf
QVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ODdkOTYzOTgyNzFjYTNmYjFlOTkxMzc0MjQ4ZGJkZDdkNDMzNTEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lv
bkhvc3QuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCisKK0BjbGFzcyBfV0tJbnNwZWN0b3JFeHRlbnNpb247CisKK0Bw
cm90b2NvbCBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0CitAb3B0aW9uYWwKKworLyoqCisgKiBA
YWJzdHJhY3QgUmVnaXN0ZXJzIGEgV2ViIEV4dGVuc2lvbiB3aXRoIHRoZSBhc3NvY2lhdGVkIFdl
YiBJbnNwZWN0b3IuCisgKiBAcGFyYW0gZXh0ZW5zaW9uSUQgQSB1bmlxdWUgaWRlbnRpZmllciBm
b3IgdGhlIGV4dGVuc2lvbi4KKyAqIEBwYXJhbSBkaXNwbGF5TmFtZSBBIGxvY2FsaXplZCBkaXNw
bGF5IG5hbWUgZm9yIHRoZSBleHRlbnNpb24uCisgKiBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIg
VGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byBiZSBjYWxsZWQgd2hlbiByZWdpc3RyYXRpb24gc3Vj
Y2VlZHMgb3IgZmFpbHMuCisgKgorICogV2ViIEV4dGVuc2lvbnMgaW4gV2ViIEluc3BlY3RvciBh
cmUgYWN0aXZlIGFzIHNvb24gYXMgdGhleSBhcmUgcmVnaXN0ZXJlZC4KKyAqLworLSAodm9pZCly
ZWdpc3RlckV4dGVuc2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25JRCBkaXNwbGF5TmFt
ZTooTlNTdHJpbmcgKilkaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vy
cm9yICogX051bGxhYmxlLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUpKWNvbXBs
ZXRpb25IYW5kbGVyOworCisvKioKKyAqIEBhYnN0cmFjdCBVbnJlZ2lzdGVycyBhIFdlYiBFeHRl
bnNpb24gd2l0aCB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yLgorICogQHBhcmFtIGV4dGVu
c2lvbklEIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBleHRlbnNpb24uCisgKiBAcGFyYW0g
Y29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byBiZSBjYWxsZWQgd2hl
biB1bnJlZ2lzdGVyaW5nIHN1Y2NlZWRzIG9yIGZhaWxzLgorICoKKyAqIFVucmVnaXN0ZXJpbmcg
YW4gZXh0ZW5zaW9uIHdpbGwgYXV0b21hdGljYWxseSBjbG9zZSBhbnkgYXNzb2NpYXRlZCBzaWRl
YmFycy90YWJzLgorICovCistICh2b2lkKXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiAqKWV4dGVuc2lvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9y
ICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyoqCisgKiBAYWJzdHJhY3QgQ2xv
c2VzIHRoZSBhc3NvY2lhdGVkIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UuIFRoaXMgd2lsbCBjYXVz
ZSBhbGwKKyAqIHJlZ2lzdGVyZWQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9ucyB0byBiZSB1bnJlZ2lz
dGVyZWQgYW5kIGludmFsaWRhdGVkLgorICovCistICh2b2lkKWNsb3NlOworQGVuZAorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTBjNDVkNTQwODgxZDU0Zjg3NDdkMjE1NjQyY2Q4OGFmYzlkMGQwYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JF
eHRlbnNpb25JbnRlcm5hbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKworI2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisjaW1wb3J0ICJXS09i
amVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBl
clRyYWl0czxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4geworICAgIHVzaW5nIFdyYXBwZXJDbGFz
cyA9IF9XS0luc3BlY3RvckV4dGVuc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIF9XS0luc3BlY3RvckV4dGVu
c2lvbiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQ
STo6SW5zcGVjdG9yRXh0ZW5zaW9uPiBfZXh0ZW5zaW9uOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklkZW50aWZpZXI7CisKK0Bl
bmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5o
CmluZGV4IGI5YThiMjAyMDA1MjlhNDJkYTRhZmMyM2Q0ZmQ0Y2YxMjBjODY4MWMuLmJhM2ZjMTMz
YjNmYTU2MDJhN2ZkNGI3NWY5MmJiNDMyYzY4ZTQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCkBAIC0yNCw2ICsyNCw3IEBACiAgKi8KIAogI2ltcG9y
dCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckV4
dGVuc2lvbkhvc3QuaD4KIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAKQEAgLTQ0LDcgKzQ1LDcg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tSZW1vdGVXZWJJbnNwZWN0b3JEZWJ1Z2dh
YmxlVHlwZSkgewogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyLjMpLCBpb3MoMTAuMykp
OwogCiBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTIuMyksIGlvcygxMC4zKSkKLUBpbnRl
cmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgOiBOU09iamVjdAorQGlu
dGVyZmFjZSBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciA6IE5TT2JqZWN0IDxf
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0PgogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
KSBpZCA8X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdh
dGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRl
eCA0ZTQwYjhiN2E3NWY1ZjcwMzU1ZDAxZGQ3NTU3Y2RiMWJhYWZjNDRjLi45MWJkNThmNGQxMjI4
YjhmZTRmNTAxZDJjOGY4YTVkMGE3M2VhNzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0zNiw2ICszNiwxNCBAQAogI2ltcG9ydCAiX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JEZWJ1
Z2dhYmxlSW5mb0ludGVybmFsLmgiCiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisjaW1wb3J0ICJBUElJbnNwZWN0b3JFeHRlbnNpb24uaCIKKyNpbXBvcnQgIldLRXJyb3IuaCIK
KyNpbXBvcnQgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCisjaW1w
b3J0ICJfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL0Jsb2Nr
UHRyLmg+CisjZW5kaWYKKwogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGludGVyZmFjZSBf
V0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAoKQpAQCAtMTgyLDYgKzE5MCw0MCBA
QCAtICh2b2lkKV9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlOihpZDxfV0tEaWFnbm9zdGlj
TG9nZ2luZ0RlbGVnYXRlPiBfTnVsbGFibAogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNl
dERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCEhZGVsZWdhdGUpOwogfQogCisvLyBNQVJLOiBf
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IG1ldGhvZHMKKworLSAodm9pZClyZWdpc3RlckV4dGVu
c2lvbldpdGhJRDooTlNTdHJpbmcgKilleHRlbnNpb25JRCBkaXNwbGF5TmFtZTooTlNTdHJpbmcg
KilkaXNwbGF5TmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICosIF9XS0lu
c3BlY3RvckV4dGVuc2lvbiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKKyAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25D
b250cm9sbGVyKCkucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBb
cHJvdGVjdGVkRXh0ZW5zaW9uSUQgPSByZXRhaW5QdHIoZXh0ZW5zaW9uSUQpLCBwcm90ZWN0ZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAg
ICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWlu
IGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29u
RXJyb3JLZXk6IGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkp
fV0sIG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYXB0
dXJlZEJsb2NrKG5pbCwgW1t3cmFwcGVyKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpjcmVhdGUo
cHJvdGVjdGVkRXh0ZW5zaW9uSUQuZ2V0KCkpKSByZXRhaW5dIGF1dG9yZWxlYXNlXSk7CisgICAg
fSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSwgbmlsKTsK
KyNlbmRpZgorfQorCistICh2b2lkKXVucmVnaXN0ZXJFeHRlbnNpb246KF9XS0luc3BlY3RvckV4
dGVuc2lvbiAqKWV4dGVuc2lvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICop
KWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
ICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS51bnJlZ2lz
dGVyRXh0ZW5zaW9uKGV4dGVuc2lvbi5leHRlbnNpb25JRCwgW3Byb3RlY3RlZFNlbGYgPSByZXRh
aW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNhcHR1
cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTog
aW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjYXB0dXJlZEJsb2NrKG5pbCk7
CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXSk7
CisjZW5kaWYKK30KKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkuY3BwCmluZGV4IGIwNDczOTMxZDczMTBmMjU4ZTliZWNjZTcwY2U1MjJjODlhN2U5
ZTQuLmY1YTAyMmVhMmUwYzk3M2RiODMyOWYwODhjNThjNzAxOTNiMDkzYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5LmNwcApAQCAtMzYsNiArMzYsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Nl
cnRpZmljYXRlSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KIAor
I2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTk1LDYgKzk5LDEzIEBAIHZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJ
bnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpKTsKIH0KIAordm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6ZnJvbnRlbmRMb2FkZWQoKQoreworI2lmIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXItPmluc3BlY3Rv
ckZyb250ZW5kTG9hZGVkKCk7CisjZW5kaWYKK30KKwogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6ZnJvbnRlbmREaWRDbG9zZSgpCiB7CiAgICAgUmVmPFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5PiBwcm90ZWN0KCp0aGlzKTsKQEAgLTE3NSw2ICsxODYsMTAgQEAgdm9pZCBSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIAogICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdl
LT53ZWJQYWdlSUQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFz
c3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFnZSwgV2ViSW5zcGVjdG9yUHJv
eHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4oKm1faW5zcGVjdG9yUGFnZSk7CisjZW5kaWYKIH0K
IAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5k
b3coKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaAppbmRleCBjMDNhMmNhNTcwZDlmNmY4MGViYWFlNTRm
YjkzYWQyNTcwY2I1ZmFhLi4wZjFjMDk4ZjQzNTlkNDNlNWJlODVkZjE3YjZiODY1M2YxMGViNDEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaApAQCAtNTYsNiArNTYsOSBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5
OwogY2xhc3MgV2ViVmlldzsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitjbGFz
cyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKKyNlbmRpZgogCiBjbGFz
cyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCB7CiBwdWJsaWM6CkBAIC04OCw2ICs5MSwx
MCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29udHJvbGxlcjsgfQorI2VuZGlmCisgICAg
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5TV2luZG93ICp3aW5kb3coKSBjb25zdCB7IHJldHVy
biBtX3dpbmRvdy5nZXQoKTsgfQogICAgIFdLV2ViVmlldyAqd2ViVmlldygpIGNvbnN0OwpAQCAt
MTE3LDYgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5IG1lc3NhZ2VzLgorICAgIHZvaWQgZnJvbnRlbmRMb2FkZWQoKTsKICAg
ICB2b2lkIGZyb250ZW5kRGlkQ2xvc2UoKTsKICAgICB2b2lkIHJlb3BlbigpOwogICAgIHZvaWQg
cmVzZXRTdGF0ZSgpOwpAQCAtMTQ5LDYgKzE1NywxMCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5Q2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKICAgICBXZWJQYWdl
UHJveHkqIG1faW5zcGVjdG9yUGFnZSB7IG51bGxwdHIgfTsKIAorI2lmIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgorICAgIAog
ICAgIFJlZjxBUEk6OkRlYnVnZ2FibGVJbmZvPiBtX2RlYnVnZ2FibGVJbmZvOwogICAgIFN0cmlu
ZyBtX2JhY2tlbmRDb21tYW5kc1VSTDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDNiZWZmZDUxYWQ5NGJmMDU1ZTQ5NzJiNmNjZGYyOTI3NzkyNjRmMjEu
LjY3NGJlYzMyNDZkMzg4OTNkNTUyZTQ2NmI3ZWQ3ZWNkMmUwOGZkZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDYgKzIxLDcgQEAKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAogbWVzc2FnZXMgLT4gUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgeworICAgIEZyb250
ZW5kTG9hZGVkKCkKICAgICBGcm9udGVuZERpZENsb3NlKCkKICAgICBSZW9wZW4oKQogICAgIFJl
c2V0U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggZjBmN2IyZGY1ZTQxOTJhYzQ1NDhiOGY3YmNi
OTk3ZDFmMTMwZDQ2MC4uMDgwYjE1OGYwMWY3YmQ5NmIxMDAxNDQxNGQ1NWM0Yzc4Y2E1NmFkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
SW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCIKQEAgLTQyMSw2ICs0MjIsMTAgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlKCkKIAogICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5pZGVu
dGlmaWVyKCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVS
ZWFkQWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5Ojpp
bnNwZWN0b3JCYXNlVVJMKCkpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
ICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHk+KCptX2luc3BlY3RvclBhZ2UpOworI2VuZGlmCiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGJvb2wgY2Fu
QXR0YWNoLCBib29sIHVuZGVyVGVzdCkKQEAgLTU0Niw2ICs1NTEsMTAgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6Y2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogICAgIGlmIChtX2lzQXR0
YWNoZWQpCiAgICAgICAgIHBsYXRmb3JtRGV0YWNoKCk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbnVsbHB0cjsKKyNlbmRp
ZgorICAgIAogICAgIC8vIE51bGwgb3V0IG1faW5zcGVjdG9yUGFnZSBhZnRlciBwbGF0Zm9ybURl
dGFjaCgpLCBzbyB0aGUgdmlld3MgY2FuIGJlIGNsZWFuZWQgdXAgY29ycmVjdGx5LgogICAgIG1f
aW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CiAKQEAgLTU3MSw2ICs1ODAsMTAgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6ZnJvbnRlbmRMb2FkZWQoKQogCiAgICAgaWYgKGF1dG8qIGF1dG9tYXRp
b25TZXNzaW9uID0gbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRv
bWF0aW9uU2Vzc2lvbigpKQogICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+aW5zcGVjdG9yRnJv
bnRlbmRMb2FkZWQoKm1faW5zcGVjdGVkUGFnZSk7CisgICAgCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlci0+aW5zcGVjdG9yRnJvbnRl
bmRMb2FkZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpicmluZ1Rv
RnJvbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yUHJveHkuaAppbmRleCAxNGQ0NzdlOGQ3OWExYzM5NzlhYzVhODk3NjBiYzNkZjBm
NWU5Yzg0Li5mNTU0MWJmNzAyODE3ZWJjOGJlMzY1MjVkYWMzMDlmODY1NDU4ZGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJv
eHkuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNjksNiArNzAsOSBAQCBjbGFzcyBXZWJG
cmFtZVByb3h5OwogY2xhc3MgV2ViSW5zcGVjdG9yUHJveHlDbGllbnQ7CiBjbGFzcyBXZWJQYWdl
UHJveHk7CiBjbGFzcyBXZWJQcmVmZXJlbmNlczsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCitjbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTsKKyNl
bmRpZgogCiBlbnVtIGNsYXNzIEF0dGFjaG1lbnRTaWRlIHsKICAgICBCb3R0b20sCkBAIC04MCw2
ICs4NCw3IEBAIGNsYXNzIFdlYkluc3BlY3RvclByb3h5CiAgICAgOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3I+CiAgICAgLCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbAor
ICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkluc3BlY3RvclByb3h5PgogI2lmIFBMQVRG
T1JNKFdJTikKICAgICAsIHB1YmxpYyBXZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIKICNl
bmRpZgpAQCAtMTAyLDYgKzEwNywxMCBAQCBwdWJsaWM6CiAgICAgV2ViUGFnZVByb3h5KiBpbnNw
ZWN0ZWRQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0ZWRQYWdlOyB9CiAgICAgV2ViUGFn
ZVByb3h5KiBpbnNwZWN0b3JQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JQYWdlOyB9
CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkmIGV4dGVuc2lvbkNvbnRyb2xsZXIoKSBjb25zdCB7IHJl
dHVybiAqbV9leHRlbnNpb25Db250cm9sbGVyOyB9CisjZW5kaWYKKwogICAgIGJvb2wgaXNDb25u
ZWN0ZWQoKSBjb25zdCB7IHJldHVybiAhIW1faW5zcGVjdG9yUGFnZTsgfQogICAgIGJvb2wgaXNW
aXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Zpc2libGU7IH0KICAgICBib29sIGlzRnJvbnQo
KTsKQEAgLTI4Niw2ICsyOTUsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkqIG1faW5z
cGVjdG9yUGFnZSB7IG51bGxwdHIgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNwZWN0
b3JDbGllbnQ+IG1faW5zcGVjdG9yQ2xpZW50OwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eT4gbV9leHRlbnNpb25Db250cm9sbGVyOworI2VuZGlmCisgICAgCiAgICAgYm9v
bCBtX3VuZGVyVGVzdCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzVmlzaWJsZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2lzQXR0YWNoZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI5YWJkNzBiZDBm
ZjYzMzllMjJiMzgzOWZlN2UzMWJkZjI2M2Y5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
aCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoV2ViUGFnZVByb3h5JiBpbnNwZWN0b3JQYWdl
KQorICAgIDogbV9pbnNwZWN0b3JQYWdlKG1ha2VXZWFrUHRyKGluc3BlY3RvclBhZ2UpKQorewor
fQorCitXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6fldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KCkKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yUGFn
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKKwor
ICAgIGF1dG8gY2FsbGJhY2tzID0gc3RkOjpleGNoYW5nZShtX2Zyb250ZW5kTG9hZGVkQ2FsbGJh
Y2tRdWV1ZSwgeyB9KTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAg
ICAgICBjYWxsYmFjaygpOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5Ojp3aGVuRnJvbnRlbmRIYXNMb2FkZWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxi
YWNrKQoreworICAgIGlmIChtX2Zyb250ZW5kTG9hZGVkICYmIG1faW5zcGVjdG9yUGFnZSkgewor
ICAgICAgICBjYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9mcm9u
dGVuZExvYWRlZENhbGxiYWNrUXVldWUuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwor
dm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6aW5zcGVjdG9yRnJv
bnRlbmRMb2FkZWQoKQoreworICAgIEFTU0VSVChtX2luc3BlY3RvclBhZ2UpOworCisgICAgbV9m
cm9udGVuZExvYWRlZCA9IHRydWU7CisKKyAgICBhdXRvIGNhbGxiYWNrcyA9IHN0ZDo6ZXhjaGFu
Z2UobV9mcm9udGVuZExvYWRlZENhbGxiYWNrUXVldWUsIHsgfSk7CisgICAgZm9yIChhdXRvJiBj
YWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKworLy8gQVBJCisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJv
b2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBl
eHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3
ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3Qp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHdlYWtUaGlzLT5t
X2luc3BlY3RvclBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpSZWdpc3RlckV4dGVuc2lvbiB7IGV4dGVuc2lvbklELCBk
aXNwbGF5TmFtZSB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OnVucmVnaXN0ZXJF
eHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmIGV4dGVuc2lvbklELCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3aGVuRnJvbnRlbmRIYXNMb2FkZWQo
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6VW5yZWdpc3RlckV4dGVu
c2lvbiB7IGV4dGVuc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwMzQxMGFiNGYxNGM5YTg0MWEwMzliZjhhMzlhNWEyMmJi
NzcwZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCisKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHkgZmluYWwKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSk7CisgICAgdmlydHVhbCB+V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkoKTsKKworICAgIC8vIEFQSS4KKyAg
ICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOworICAgIHZvaWQgdW5yZWdp
c3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYm
KTsKKworICAgIC8vIE5vdGlmaWNhdGlvbnMuCisgICAgdm9pZCBpbnNwZWN0b3JGcm9udGVuZExv
YWRlZCgpOworCitwcml2YXRlOgorICAgIHZvaWQgd2hlbkZyb250ZW5kSGFzTG9hZGVkKEZ1bmN0
aW9uPHZvaWQoKT4mJik7CisKKyAgICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4gbV9pbnNwZWN0b3JQ
YWdlOworCisgICAgLy8gVXNlZCB0byBxdWV1ZSBhY3Rpb25zIHN1Y2ggYXMgcmVnaXN0ZXJpbmcg
ZXh0ZW5zaW9ucyB0aGF0IGhhcHBlbiBlYXJseSBvbi4KKyAgICAvLyBUaGVyZSdzIG5vIHBvaW50
IHNlbmRpbmcgdGhlc2UgYmVmb3JlIHRoZSBmcm9udGVuZCBpcyBmdWxseSBsb2FkZWQuCisgICAg
VmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlOwor
CisgICAgYm9vbCBtX2Zyb250ZW5kTG9hZGVkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjJk
Mzc1MWNkMWZmZDdhYWNmZTIzYmFmOWU2NjVlMDNhYTdmN2ExZC4uNzc5YzUyMTI0MWZjN2Y0NmY2
Nzg2MWE3OWIzNTFmYTgyZTE3NmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDM3LDggKzE0MzcsMTUgQEAKIAkJOTk1NUE2RjYx
Qzc5ODZFMzAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RjIxQzc5ODY2NDAw
RUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuY3BwICovOyB9OwogCQk5OTU1QTZG
NzFDNzk4NkU1MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RjMxQzc5ODY2NDAw
RUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCAqLzsgfTsKIAkJOTk3ODhBQ0Ix
RjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3ODhBQzkxRjQy
MURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5Nzk2NTlFMjUz
MTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1
OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmggKi87IH07CisJCTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1OUIyNTMxMEE0ODAwQjMxQUUz
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CisJCTk5Nzk2NUEzMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25Ib3N0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTc5NjVBMjI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5NzlDQTU4
MjM3RjQ5RjEwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUg
LyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk5OTk2QTlGMjUwMDRCQ0MwMDRGNzU1OSAvKiBfV0tJbnNwZWN0
b3JQcml2YXRlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk5OTZBOUQyNTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZh
dGVGb3JUZXN0aW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTlCMTY3NTcyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3
NTQyNTJCQjdFMDAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5QjE2NzU4MjUyQkI3RTEw
MDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBF
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmggKi87IH07CisJCTk5QjE2NzVCMjUy
QkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCMTY3NUEy
NTJCQkFERDAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
LmggKi87IH07CisJCTk5QjE2NzY0MjUyQkJFNjIwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5QjE2NzYxMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJOTlDM0FFMkQxREFEQTZBRDAwQUY1QzE2IC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OUMzQUUyQzFEQURBNkE3MDBBRjVDMTYgLyogV2ViQXV0b21hdGlv
blNlc3Npb25NYWNyb3MuaCAqLzsgfTsKIAkJOTlDODFENUExQzIwRTdFMjAwNUM0QzgyIC8qIEF1
dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5QzgxRDU1MUMyMERGQkUwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggKi87
IH07CiAJCTk5QzgxRDVEMUMyMUYzOEIwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1QjFD
MjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovOyB9OwpAQCAtNDU3Myw5
ICs0NTgwLDIzIEBACiAJCTk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJv
dG9jb2xPYmplY3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEF1dG9tYXRp
b25Qcm90b2NvbE9iamVjdHMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvQXV0b21h
dGlvblByb3RvY29sT2JqZWN0cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk5OTc4OEFDOTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25m
aWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F1dG9tYXRp
b25TZXNzaW9uQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTc4OEFDQTFGNDIxRENBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQXV0b21h
dGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OTc5NjU5QTI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTk3OTY1OUIyNTMxMEE0ODAw
QjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk5OTc5NjVB
MjI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NzlDQTU3MjM3RjQ5RjAwMDM5RUMwNSAvKiBf
V0tJbnNwZWN0b3JQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S0luc3BlY3RvclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk5OTZB
OUQyNTAwNEJDQjAwNEY3NTU5IC8qIF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0
aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OTk2QTlFMjUwMDRCQ0IwMDRG
NzU1OSAvKiBfV0tJbnNwZWN0b3JUZXN0aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gX1dLSW5zcGVjdG9yVGVzdGluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTk5QjdFRDgyNTUwRTRBODAwRjQ1MEE0IC8qIEluc3BlY3RvckV4dGVuc2lv
blR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NTQyNTJCQjdFMDAwNzMxNDBF
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckV4dGVu
c2lvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzU2MjUy
QkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzVBMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc1RDI1MkJCRTBBMDA3MzE0MEUgLyog
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc2MDI1MkJCRTYx
MDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzYxMjUyQkJF
NjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzYyMjUyQkJFNjEwMDcz
MTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1l
c3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUJFM0IxMjI1NDIyRjQx
MDBDNjU1MUMgLyogQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSUluc3BlY3RvckV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OUJFM0IxNjI1NDMzQjk0MDBDNjU1MUMgLyogSW5zcGVjdG9yRXh0ZW5zaW9u
VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDM0FFMjMxREFEOEUzNDAwQUY1QzE2IC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5QzNBRTI2MURBRDk0ODUwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbkNv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXV0b21h
dGlvblNlc3Npb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlDM0FF
MkMxREFEQTZBNzAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTQ2LDYgKzYxNjcsOCBAQAogCQkJCTVD
MTIxRTgzMjQxMDFGNzAwMDQ4NkY5QiAvKiBGcmFtZVRyZWVOb2RlRGF0YS5oICovLAogCQkJCTFB
Qzc1QTFBMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIuaCAqLywKIAkJ
CQlCQ0NGNkIyMzEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggKi8sCisJCQkJOTk5
QjdFRDgyNTUwRTRBODAwRjQ1MEE0IC8qIEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCAqLywK
KwkJCQk5OUJFM0IxNjI1NDMzQjk0MDBDNjU1MUMgLyogSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMu
aCAqLywKIAkJCQkxQTkyREMxMjEyRjhCQUI5MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dC5j
cHAgKi8sCiAJCQkJMUE5MkRDMTAxMkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQu
aCAqLywKIAkJCQkyRDEwODc1RTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3Bw
ICovLApAQCAtNzM2MSw2ICs3Mzg0LDEwIEBACiAJCQkJOTkxRjQ5MkUyM0E4MTJDNjAwNTQ2NDJC
IC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLm1tICovLAogCQkJCTk5MDM2QUUxMjNBOTQ5
Q0UwMDAwQjA2QSAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmggKi8sCiAJ
CQkJOTE5Nzk0MEIyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggKi8s
CisJCQkJOTlCMTY3NTQyNTJCQjdFMDAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbi5o
ICovLAorCQkJCTk5QjE2NzU2MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b24ubW0gKi8sCisJCQkJOTk3OTY1QTIyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbkhvc3QuaCAqLywKKwkJCQk5OUIxNjc1NTI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCAqLywKIAkJCQk1Q0FGREU0NDIxMzA4NDM2MDBCMUY3
RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCAqLywKIAkJCQk5OTc5Q0E1NzIzN0Y0OUYwMDAz
OUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oICovLAogCQkJCTk5OTk2QTlEMjUwMDRCQ0Iw
MDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oICovLApAQCAtODY2OSw2
ICs4Njk2LDggQEAKIAkJCQkxQzhFMjgzMzEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9y
UHJveHkuY3BwICovLAogCQkJCTFDOEUyODMyMTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0
b3JQcm94eS5oICovLAogCQkJCTFDNzdDMTk1MTI4OEE4NzIwMDZBNzQyRiAvKiBXZWJJbnNwZWN0
b3JQcm94eS5tZXNzYWdlcy5pbiAqLywKKwkJCQk5OUIxNjc1RDI1MkJCRTBBMDA3MzE0MEUgLyog
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwICovLAorCQkJCTk5QjE2
NzVBMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oICovLAogCQkJCUE1NUJBODI3MUJBMzhFMUUwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JV
dGlsaXRpZXMuY3BwICovLAogCQkJCUE1NUJBODI4MUJBMzhFMUUwMDdDRDMzRCAvKiBXZWJJbnNw
ZWN0b3JVdGlsaXRpZXMuaCAqLywKIAkJCQlBNUVDNkFEMjIxNTFCRDY5MDA2NzdEMTcgLyogV2Vi
UGFnZURlYnVnZ2FibGUuY3BwICovLApAQCAtODczMSw2ICs4NzYwLDkgQEAKIAkJCQkxQzg5MUQ2
MjE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuY3BwICovLAogCQkJCTFDODkxRDYz
MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oICovLAogCQkJCTFDODkxRDY0MTlC
MTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiAqLywKKwkJCQk5OUIx
Njc2MDI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmNwcCAqLywKKwkJCQk5OUIxNjc2MTI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLmggKi8sCisJCQkJOTlCMTY3NjIyNTJCQkU2MTAwNzMxNDBFIC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLywKIAkJCQlB
NTQzRTMwQTIxNUM4QTg0MDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAgKi8s
CiAJCQkJQTU0M0UzMDgyMTVDOEE4MzAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQu
aCAqLywKIAkJCQlBNTQzRTMwOTIxNUM4QTgzMDAyNzlDRDkgLyogV2ViUGFnZUluc3BlY3RvclRh
cmdldENvbnRyb2xsZXIuY3BwICovLApAQCAtOTM1Niw2ICs5Mzg4LDcgQEAKIAkJCQk5MTk3OTQw
OTIzREJDNEUwMDAyNTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xpZW50LmggKi8sCiAJCQkJOTk0QzYw
NDgyNTNGODIwMjAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uY3BwICovLAog
CQkJCTk5NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9u
LmggKi8sCisJCQkJOTlCRTNCMTIyNTQyMkY0MTAwQzY1NTFDIC8qIEFQSUluc3BlY3RvckV4dGVu
c2lvbi5oICovLAogCQkJCTMxQjM2MjkwMjE0MUVBQkMwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERl
YnVnRmVhdHVyZS5jcHAgKi8sCiAJCQkJMzFCMzYyOEUyMTQxRUE0RDAwN0JGQTUzIC8qIEFQSUlu
dGVybmFsRGVidWdGZWF0dXJlLmggKi8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8q
IEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCkBAIC0xMDM4Niw2ICsxMDQxOSw4
IEBACiAJCQkJMUM4RTJBMzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2Vz
LmggKi8sCiAJCQkJMUNBOEI5NDMxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkxQ0E4Qjk0NDEyN0M4ODJBMDA1NzZDMkIgLyog
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTk5Nzk2NTlCMjUzMTBBNDgwMEIz
MUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLAorCQkJCTk5Nzk2NTlBMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAogCQkJCTFDQkJFNDlFMTlCNjZDNTMwMDZC
N0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUNCQkU0
OUYxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCAqLywKIAkJCQk1
MUYwNjBERDE2NTQzMTc1MDBGMzI4MkYgLyogV2ViTUROU1JlZ2lzdGVyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKQEAgLTEwODAxLDYgKzEwODM2LDkgQEAKIAkJCQk5OTFGNDkyRjIzQTgxMkM2MDA1
NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk5MDM2QUUyMjNBOTQ5Q0YwMDAwQjA2QSAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0lu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTk3OTQwQzIzREJDNTAzMDAyNTc4OTIgLyog
X1dLSW5zcGVjdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QjE2NzU3MjUyQkI3
RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk5Nzk2NUEzMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQUZERTQ3MjEzMDg0
NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTk3OUNBNTgyMzdGNDlGMTAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5OTk2QTlGMjUwMDRCQ0MwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2
YXRlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTUzNyw2ICsxMTU3NSw5IEBACiAJ
CQkJMUM4RTI4MzQxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJv
eHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OURE
IC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc2NDI1MkJCRTYy
MDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5OTc5NjU5RTI1MzEwQTQ5MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5QjE2NzVCMjUy
QkJBREQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUNCQkU0QTExOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3Bl
Y3RvclVJTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUJBODJCMUJBMzhFNjEwMDdD
RDMzRCAvKiBXZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQTk0
NEEwMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJJT1NFdmVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICov
LApAQCAtMTMzNTUsNiArMTMzOTYsNyBAQAogCQkJCUZFREJEQ0Q2MUU2OEQyMDAwMEE1OUY4RiAv
KiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFDOEUyQTM1MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5NDUxMjdDODgyQTAw
NTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk5Nzk2NTlGMjUzMTBBNDkwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNC
QkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzhBMjEyQjZBQjEwMEY0OTNGRCAvKiBXZWJLZXli
b2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjI4MEYzMTkxOTk4MkEwMDZBRDlG
OSAvKiBXZWJLaXQubSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcAppbmRleCA2
NzcxYzZmMGRlNjMxZmNjMTQyZWY2MDg2ZmUwYWFiZTc0YzdmNjUzLi5kMTM5MGJmZDZmNmJlMjMx
NTY2N2MwNGZkNmJlYzNkNmFjMTU1MmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcApAQCAtMzks
NiArMzksMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgiCisj
ZW5kaWYKKwogI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShHVEspICYmICFQTEFURk9S
TShXSU4pCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2VuZGlmCkBAIC01
OCw4ICs2MiwxNCBAQCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6UmVtb3RlV2ViSW5zcGVjdG9yVUko
V2ViUGFnZSYgcGFnZSkKICAgICBXZWJJbnNwZWN0b3JVSTo6ZW5hYmxlRnJvbnRlbmRGZWF0dXJl
cygpOwogfQogCitSZW1vdGVXZWJJbnNwZWN0b3JVSTo6flJlbW90ZVdlYkluc3BlY3RvclVJKCkg
PSBkZWZhdWx0OworCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjppbml0aWFsaXplKERlYnVn
Z2FibGVJbmZvRGF0YSYmIGRlYnVnZ2FibGVJbmZvLCBjb25zdCBTdHJpbmcmIGJhY2tlbmRDb21t
YW5kc1VSTCkKIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9leHRl
bnNpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXI+KCp0aGlzKTsKKyNlbmRpZgorCiAgICAgbV9kZWJ1Z2dhYmxlSW5mbyA9IFdURk1vdmUo
ZGVidWdnYWJsZUluZm8pOwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0gYmFja2VuZENvbW1h
bmRzVVJMOwogCkBAIC0xMDksNiArMTE5LDggQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6
ZnJvbnRlbmRMb2FkZWQoKQogCiAgICAgbV9mcm9udGVuZEFQSURpc3BhdGNoZXItPmRpc3BhdGNo
Q29tbWFuZFdpdGhSZXN1bHRBc3luYygic2V0SXNWaXNpYmxlIl9zLCB7IEpTT046OlZhbHVlOjpj
cmVhdGUodHJ1ZSkgfSk7CiAKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
RnJvbnRlbmRMb2FkZWQoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CisKICAgICBicmluZ1RvRnJv
bnQoKTsKIH0KIApAQCAtMTc0LDYgKzE4NiwxMCBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJ
OjpjbG9zZVdpbmRvdygpCiB7CiAgICAgbV9wYWdlLmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsKIAorI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBudWxs
cHRyOworI2VuZGlmCisgICAgCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OkZyb250ZW5kRGlkQ2xvc2UoKSwgbV9wYWdlLmlkZW50aWZpZXIoKSk7CiB9CiAKQEAgLTI1OCw2
ICsyNzQsMTIgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2V0RGlhZ25vc3RpY0xvZ2dp
bmdBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCiB9CiAjZW5kaWYKIAorV2ViQ29yZTo6UGFnZSog
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kUGFnZSgpCit7CisgICAgcmV0dXJuIG1fcGFn
ZS5jb3JlUGFnZSgpOworfQorCisKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oR1RL
KSAmJiAhUExBVEZPUk0oV0lOKQogU3RyaW5nIFJlbW90ZVdlYkluc3BlY3RvclVJOjpsb2NhbGl6
ZWRTdHJpbmdzVVJMKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaAppbmRleCAwMjVlYzkwYTFk
NGFmMWM5ZjU1M2RiYzQyZjdjOTM5ZmQ0Mzk4NDkzLi5iOGRhOWE5ZjhhNWE3NjZkMTM2MTIyNmFm
MGM0ZTg1NjE2NTZiM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCkBAIC0zOSwxMSArMzksMTYgQEAg
Y2xhc3MgRmxvYXRSZWN0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyOwogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgUmVtb3Rl
V2ViSW5zcGVjdG9yVUkgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW1vdGVXZWJJbnNwZWN0
b3JVST4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50IHsKK2NsYXNzIFJlbW90ZVdlYkluc3BlY3RvclVJIGZpbmFsCisg
ICAgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW1vdGVXZWJJbnNwZWN0b3JVST4KKyAgICAsIHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVdlYkluc3BlY3Rv
clVJPiBjcmVhdGUoV2ViUGFnZSYpOworICAgIH5SZW1vdGVXZWJJbnNwZWN0b3JVSSgpOwogCiAg
ICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFJlbW90ZVdlYkluc3BlY3RvclVJTWVzc2Fn
ZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CkBAIC05Nyw2ICsxMDIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzaG93Q2VydGlmaWNhdGUoY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXImIGZy
b250ZW5kQVBJRGlzcGF0Y2hlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZnJvbnRlbmRBUElEaXNw
YXRjaGVyOyB9CisgICAgV2ViQ29yZTo6UGFnZSogZnJvbnRlbmRQYWdlKCkgZmluYWw7CiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SX1RFTEVNRVRSWSkKICAgICBib29sIHN1cHBvcnRzRGlhZ25vc3Rp
Y0xvZ2dpbmcoKSBvdmVycmlkZTsKQEAgLTExNyw2ICsxMjMsMTAgQEAgcHJpdmF0ZToKICAgICBX
ZWJQYWdlJiBtX3BhZ2U7CiAgICAgUmVmPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlcj4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7CiAgICAgUmVmUHRyPFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kSG9zdD4gbV9mcm9udGVuZEhvc3Q7CisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgorCiAgICAgRGVidWdn
YWJsZUluZm9EYXRhIG1fZGVidWdnYWJsZUluZm87CiAgICAgU3RyaW5nIG1fYmFja2VuZENvbW1h
bmRzVVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IDgyODA5YWRiNmRlZTZhNTViYjk1MjY3ODM1MTM4YWMy
MzY3OTVlNWQuLmMyZDg4MzZhYzIyMDA5MWE1Y2VmNWM2N2MyNjdlZTI4MGQyN2E1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUkuY3BwCkBAIC0zNiwxMCArMzYsMTUgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdyYXBwZXJX
b3JsZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXR0aW5ncy5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2luY2x1ZGUg
IldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY1LDYgKzcwLDggQEAg
V2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBhZ2UmIHBhZ2UpCiAgICAgV2ViSW5z
cGVjdG9yVUk6OmVuYWJsZUZyb250ZW5kRmVhdHVyZXMoKTsKIH0KIAorV2ViSW5zcGVjdG9yVUk6
On5XZWJJbnNwZWN0b3JVSSgpID0gZGVmYXVsdDsKKwogdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0
YWJsaXNoQ29ubmVjdGlvbihXZWJQYWdlUHJveHlJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBEZWJ1Z2dhYmxlSW5mb0RhdGEmIGRlYnVnZ2FibGVJbmZvLCBib29sIHVu
ZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogewogICAgIG1faW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKQEAgLTcyLDggKzc5LDExIEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRl
bnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlCiAgICAgbV91bmRlclRlc3QgPSB1bmRlclRlc3Q7CiAg
ICAgbV9pbnNwZWN0aW9uTGV2ZWwgPSBpbnNwZWN0aW9uTGV2ZWw7CiAKLSAgICBtX2Zyb250ZW5k
QVBJRGlzcGF0Y2hlci0+cmVzZXQoKTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbWFrZVVuaXF1ZTxXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI+KCp0aGlzKTsKKyNlbmRpZgogCisgICAgbV9mcm9udGVuZEFQSURp
c3BhdGNoZXItPnJlc2V0KCk7CiAgICAgbV9mcm9udGVuZENvbnRyb2xsZXIgPSAmbV9wYWdlLmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKTsKICAgICBtX2Zyb250ZW5kQ29udHJvbGxl
ci0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQodGhpcyk7CiAKQEAgLTE2NSw2ICsxNzUsMTAg
QEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogCiAgICAgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllciA9IHsgfTsKICAgICBtX3VuZGVyVGVzdCA9IGZhbHNlOworICAgIAorI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIg
PSBudWxscHRyOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnJlb3BlbigpCkBA
IC00MTIsNiArNDI2LDEyIEBAIFN0cmluZyBXZWJJbnNwZWN0b3JVSTo6dGFyZ2V0UHJvZHVjdFZl
cnNpb24oKSBjb25zdAogICAgIHJldHVybiBtX2RlYnVnZ2FibGVJbmZvLnRhcmdldFByb2R1Y3RW
ZXJzaW9uOwogfQogCitXZWJDb3JlOjpQYWdlKiBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRQYWdl
KCkKK3sKKyAgICByZXR1cm4gbV9wYWdlLmNvcmVQYWdlKCk7Cit9CisKKwogI2lmICFQTEFURk9S
TShNQUMpICYmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShXSU4pCiBib29sIFdlYkluc3Bl
Y3RvclVJOjpjYW5TYXZlKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAppbmRleCBhNmVlNzEzMzkzOWVmMmEwNGI2Yjg2MmIy
OGU4MjE3ZmUyMGRiMWVlLi4yNGMxYWI0NjllODBkNWIzNzdiMDYwOWY3MDVmZGU2ZmUwZTlkMjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSS5oCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rv
ckRlYnVnZ2FibGVUeXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKK2NsYXNzIEluc3BlY3Rv
ckZyb250ZW5kSG9zdDsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEZsb2F0UmVjdDsK
IH0KQEAgLTQyLDEwICs0MiwxNyBAQCBjbGFzcyBGbG9hdFJlY3Q7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViUGFnZTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCitj
bGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKIAotY2xhc3Mg
V2ViSW5zcGVjdG9yVUkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJJbnNwZWN0b3JVST4sIHByaXZh
dGUgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENsaWVudCB7CitjbGFzcyBXZWJJbnNwZWN0b3JVSSBmaW5hbAorICAgIDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViSW5zcGVjdG9yVUk+CisgICAgLCBwcml2YXRlIElQQzo6Q29ubmVjdGlvbjo6
Q2xpZW50CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViSW5zcGVjdG9yVUk+IGNyZWF0ZShXZWJQYWdlJik7
CisgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9yVUkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGVuYWJs
ZUZyb250ZW5kRmVhdHVyZXMoKTsKIApAQCAtMTQzLDcgKzE1MCw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyJiBmcm9udGVuZEFQSURpc3Bh
dGNoZXIoKSBmaW5hbCB7IHJldHVybiBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlcjsgfQotCisgICAg
V2ViQ29yZTo6UGFnZSogZnJvbnRlbmRQYWdlKCkgZmluYWw7CisgICAgICAgIAogICAgIHZvaWQg
cGFnZVBhdXNlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFnZVVucGF1c2VkKCkgb3ZlcnJpZGU7
CiAKQEAgLTE2MCw2ICsxNjgsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBjb3JlUGFnZSgpLCBzaW5j
ZSB3ZSBtYXkgbmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBwYWdlIGhhcyBzdGFydGVkIGRl
c3RydWN0aW9uLgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIG1fZnJvbnRlbmRD
b250cm9sbGVyIHsgbnVsbHB0ciB9OwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI+
IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgorCiAgICAgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIGJvb2wgbV91bmRlclRlc3QgeyBm
YWxzZSB9OwogICAgIERlYnVnZ2FibGVJbmZvRGF0YSBtX2RlYnVnZ2FibGVJbmZvOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhMjIz
NzJkNzk3ZjEyNWVkYmJiZjEyYTgxZTI3NTdiYTMyMGUwMmQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgi
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJXZWJJbnNw
ZWN0b3JVSS5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVz
c2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQmIGluc3BlY3RvckZyb250ZW5kKQorICAgIDogbV9mcm9udGVuZENsaWVu
dChtYWtlV2Vha1B0cihpbnNwZWN0b3JGcm9udGVuZCkpCit7CisgICAgUGFnZSogcGFnZSA9IGlu
c3BlY3RvckZyb250ZW5kLmZyb250ZW5kUGFnZSgpOworICAgIEFTU0VSVChwYWdlKTsKKworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIFdl
YlBhZ2U6OmZyb21Db3JlUGFnZSgqcGFnZSkuaWRlbnRpZmllcigpLCAqdGhpcyk7Cit9CisKK1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcigpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKCp0aGlzKTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJbnNwZWN0b3JFeHRlbnNp
b25FcnJvckZyb21SZXN1bHQoSlNDOjpKU1ZhbHVlIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQobV9m
cm9udGVuZENsaWVudCk7CisgICAgYXV0byBnbG9iYWxPYmplY3QgPSBtX2Zyb250ZW5kQ2xpZW50
LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEdsb2JhbE9iamVjdCgpOworICAgIGlm
ICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OkNvbnRleHREZXN0cm95ZWQ7CisKKyAgICAvLyBJZiB0aGUgZXZhbHVhdGlvbiByZXN1bHQgaXMg
YSBzdHJpbmcsIHRoZSBmcm9udGVuZCByZXR1cm5lZCBhbiBlcnJvciBzdHJpbmcuCisgICAgLy8g
QW55dGhpbmcgZWxzZSAoZmFsc3kgdmFsdWVzLCBvYmplY3RzLCBhcnJheXMsIERPTSwgZXRjLikg
aXMgaW50ZXJwcmV0ZWQgYXMgc3VjY2Vzcy4KKyAgICBpZiAocmVzdWx0LmlzU3RyaW5nKCkpIHsK
KyAgICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSByZXN1bHQudG9XVEZTdHJpbmcoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiQ29udGV4dERlc3Ryb3llZCJfcykK
KyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6Q29udGV4dERlc3Ry
b3llZDsKKyAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW50ZXJuYWxFcnJvciJfcykKKyAg
ICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsK
KyAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW52YWxpZFJlcXVlc3QiX3MpCisgICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0OworICAg
ICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJSZWdpc3RyYXRpb25GYWlsZWQiX3MpCisgICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OlJlZ2lzdHJhdGlvbkZhaWxlZDsK
KworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgIH0KKworICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Cit9CisKKy8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlciBJUEMg
bWVzc2FnZXMuCisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpyZWdp
c3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Zy
b250ZW5kQ2xpZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVk
KEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7Cisg
ICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpLAorICAgICAgICBKU09OOjpW
YWx1ZTo6Y3JlYXRlKGRpc3BsYXlOYW1lKSwKKyAgICB9OworICAgIG1fZnJvbnRlbmRDbGllbnQt
PmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdpdGhSZXN1bHRBc3luYygi
cmVnaXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYm
IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXJlc3VsdCkgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vha1RoaXMtPnBhcnNl
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tUmVzdWx0KHJlc3VsdC52YWx1ZSgpKSkgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQocGFyc2VkRXJyb3IudmFs
dWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZnJvbnRl
bmRDbGllbnQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVlPj4gYXJndW1lbnRzIHsgSlNPTjo6
VmFsdWU6OmNyZWF0ZShleHRlbnNpb25JRCkgfTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9u
dGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInVucmVn
aXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVhdGlvblJlc3VsdCYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXJlc3VsdCkgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vha1RoaXMtPnBhcnNlSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tUmVzdWx0KHJlc3VsdC52YWx1ZSgpKSkgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQocGFyc2VkRXJyb3IudmFsdWUo
KSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIodHJ1ZSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjViNDBhYjM5M2EwNTFmYjI1MjA1
MDdlMzViYmRjZGVhZTE1ODU2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKQEAg
LTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIEpTQyB7CitjbGFzcyBKU1ZhbHVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYkluc3BlY3RvclVJOworCitjbGFzcyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcj4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50Jik7CisgICAgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcigpOworCisgICAg
Ly8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOworCisgICAgLy8gV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyIElQQyBtZXNzYWdlcy4KKyAgICB2b2lkIHJlZ2lzdGVy
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwg
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CisKK3ByaXZhdGU6CisgICAgT3B0aW9uYWw8
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9t
UmVzdWx0KEpTQzo6SlNWYWx1ZSByZXN1bHQpOworCisgICAgV2Vha1B0cjxXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yYzc4ZWQ3NWNjYzNhOTc2ZWZlNzYwY2NiZjhkOGM2MTA0NTQ2NWM0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQorCittZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7CisgICAgUmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5n
IGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChFeHBlY3RlZDxib29sLCBXZWJL
aXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCisgICAgVW5yZWdpc3Rl
ckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBlY3RlZDxib29sLCBXZWJLaXQ6
Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb24uY3BwCmluZGV4IGQ0ZjRkNGY2OTQwMDAyNmI5OWY3YmM1NDIxZmM0
YzljYzRlNjE4YWQuLmVhMTZiMmVkNzY2NWIzMmJkMzljYWM0NjMyYjRiOWE1MWE3NWQ2YjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb24uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmgi
CiAKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1NwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudC5oPgpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk4OGMwOGNmNjI3
NGNiNWNlMjE5NmFkZDAyZjZlMjY2YjkzMGQyMTYuLjM3ZTdhNGI1MmFjNmUzZjhkNWVhMWU1MTU0
MzY3MjU4YjMwY2VjODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMS0wMyAgQnJpYW4gQnVyZyAgPGJidXJn
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEluc3BlY3RvciBFeHRlbnNpb25zOiBBZGQg
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFuZCByZWxhdGVkIHBsdW1iaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3ODMKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY5OTY4Nzg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4K
KworICAgICAgICBBZGQgQVBJIHRlc3RzIHRvIGV4ZXJjaXNlIG5ldyBtZXRob2RzIG9mIHRoZSBf
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IHByb3RvY29sLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IE5ldyB0ZXN0IGZp
bGUuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3Rv
ckV4dGVuc2lvbkhvc3QubW06IEFkZGVkLgorICAgICAgICAocmVzZXRHbG9iYWxTdGF0ZSk6Cisg
ICAgICAgICgtW1VJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBfd2Vi
VmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIw
LTExLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFNldCB1
cCBiYXNpYyBpbmZyYXN0cnVjdHVyZSBmb3IgU3BlZWNoUmVjb2duaXRpb24KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNWI1MDg5MzY3NDNjZDEwMDI1M2IwNWE0MTNiMWQ2YWE1OTdiNzIyOC4u
NmRjOTBhZTAwMWEzMWNlNTcyNWVjYzg0YjNkZDZjZTQ5Njg1YzRhYyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTgzNSw2ICs4MzUsNyBAQAogCQk5OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMg
LyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJ
bnB1dC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAwOEQxOThDIC8qIGVkaXRhYmxlLWJv
ZHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovOyB9
OwogCQk5OTk5MTA4QjFGMzkzQzk2MDA4QUQ0NTUgLyogQ29weWluZy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5OTkxMDhBMUYzOTNDOEIwMDhBRDQ1
NSAvKiBDb3B5aW5nLm1tICovOyB9OworCQk5OTlCN0VFMzI1NTFDNjNCMDBGNDUwQTQgLyogV0tJ
bnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk5QjdFRTIyNTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0
ZW5zaW9uSG9zdC5tbSAqLzsgfTsKIAkJOTlCNEY5QzYyNEVERUQ5NzAwMDIyQjgyIC8qIFdLSW5z
cGVjdG9yRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5t
bSAqLzsgfTsKIAkJOUIwMkUwRDYyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAyRTBE
NTIzNUZBNDdEMDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5tbSAqLzsgfTsKIAkJOUIwNzg2
QTUxQzU4ODVDMzAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Bl
bl9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUIwNzg2QTQxQzU4ODVDMzAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRv
d1Jvb3RzT3Blbl9CdW5kbGUuY3BwICovOyB9OwpAQCAtMjQ0Niw2ICsyNDQ3LDcgQEAKIAkJOTk4
NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1RleHRJbnB1dC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk4NEZBQ0QxQ0ZGQjAzODAwOEQxOThDIC8qIGVk
aXRhYmxlLWJvZHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJlZGl0YWJsZS1i
b2R5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTk5MTA4QTFGMzkzQzhC
MDA4QUQ0NTUgLyogQ29weWluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IENvcHlpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5OUI3RUUy
MjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvckV4dGVuc2lvbkhvc3Qu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QjRGOUM1MjRFREVEOTYwMDAyMkI4
MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUIwMkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0TWFuaXB1bGF0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QjA3ODZBMjFDNTg4MzBGMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5k
bGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDA5LDYgKzM0MTEsNyBAQAogCQkJCTM3MENFMjI5
MUY1NzM0MzQwMEU3NDEwQiAvKiBXS0NvbnRlbnRWaWV3VGFyZ2V0Rm9yQWN0aW9uLm1tICovLAog
CQkJCTUxRDEyNDk3MUU3NjNBRjgwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSAqLywK
IAkJCQk5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAq
LywKKwkJCQk5OTlCN0VFMjI1NTFDNjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25I
b3N0Lm1tICovLAogCQkJCUE1QTcyOUYwMUY2MjJBOUEwMERFNUEyOCAvKiBXS05hdmlnYXRpb25S
ZXNwb25zZS5tbSAqLywKIAkJCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rp
b25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLywKIAkJCQkzNzVFMEUxNTFENjY2NzQ0MDBF
RkVDMkMgLyogV0tOU051bWJlci5tbSAqLywKQEAgLTU1NDIsNiArNTU0NSw3IEBACiAJCQkJNTFE
MTI0OTgxRTc2M0IwMjAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdGMUQxQTQxMUFFNjAwNDQ3QzRDIC8qIFdLSW1hZ2VDcmVhdGVDR0ltYWdl
Q3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTlCNEY5QzYyNEVERUQ5NzAwMDIyQjgyIC8q
IFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk5OTlCN0VFMzI1NTFD
NjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTVBNzI5RjExRjYyMkFBNzAwREU1QTI4IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJREY0QjI3MzkyMUE0NzcyODAwOUJEMUNBIC8qIFdLTlNEaWN0
aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzVFMEUx
NzFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4
dGVuc2lvbkhvc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
SW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWRhY2Q3OWNkYWQ3NzhmOTM0
YTA5Y2Q4OTQ1MDRkZWRhZGNhNjY4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0KQEAgLTAs
MCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAi
VGVzdC5oIgorI2ltcG9ydCAiVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9y
UHJpdmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworc3RhdGljIGJvb2wgZGlkQXR0YWNoTG9jYWxJ
bnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHBlbmRpbmdDYWxsYmFja1dhc0Nh
bGxlZCA9IGZhbHNlOworCitzdGF0aWMgdm9pZCByZXNldEdsb2JhbFN0YXRlKCkKK3sKKyAgICBk
aWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworICAgIHBlbmRpbmdDYWxsYmFj
a1dhc0NhbGxlZCA9IGZhbHNlOworfQorCitAaW50ZXJmYWNlIFVJRGVsZWdhdGVGb3JUZXN0aW5n
SW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbkhv
c3QKKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hMb2Nh
bEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCit7CisgICAgRVhQRUNUX0VRKHdl
YlZpZXcuX2luc3BlY3RvciwgaW5zcGVjdG9yKTsKKyAgICBkaWRBdHRhY2hMb2NhbEluc3BlY3Rv
ckNhbGxlZCA9IHRydWU7Cit9CisKK0BlbmQKKworVEVTVChXS0luc3BlY3RvckV4dGVuc2lvbkhv
c3QsIFJlZ2lzdGVyRXh0ZW5zaW9uKQoreworICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsKKworICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIG5ld10pOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9k
ZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8g
dWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5z
aW9uSG9zdCBuZXddKTsKKworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5n
ZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8aGVhZD48dGl0bGU+VGVzdCBw
YWdlIHRvIGJlIGluc3BlY3RlZDwvdGl0bGU+PC9oZWFkPjxib2R5PjxwPkZpbGxlciBjb250ZW50
PC9wPjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBs
ZS5jb20vIl1dOworCisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQpOworCisg
ICAgYXV0byBmaXJzdElEID0gW05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nOworICAgIGF1dG8gc2Vj
b25kSUQgPSBbTlNVVUlEIFVVSURdLlVVSURTdHJpbmc7CisKKyAgICAvLyBOb3JtYWwgcmVnaXN0
cmF0aW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2Vi
VmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGRpc3BsYXlO
YW1lOkAiRmlyc3RFeHRlbnNpb24iIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxs
YWJsZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikg
eworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChl
eHRlbnNpb24pOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXND
YWxsZWQpOworCisgICAgLy8gRG91YmxlIHJlZ2lzdHJhdGlvbi4KKyAgICBwZW5kaW5nQ2FsbGJh
Y2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJF
eHRlbnNpb25XaXRoSUQ6Zmlyc3RJRCBkaXNwbGF5TmFtZTpAIkZpcnN0RXh0ZW5zaW9uIiBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIF9XS0luc3BlY3RvckV4
dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxM
KGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXh0ZW5zaW9uKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoW2Vycm9yLmxvY2FsaXplZEZhaWx1cmVSZWFzb24gY29udGFpbnNTdHJpbmc6QCJSZWdp
c3RyYXRpb25GYWlsZWQiXSk7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxs
YmFja1dhc0NhbGxlZCk7CisKKyAgICAvLyBUd28gcmVnaXN0cmF0aW9ucy4KKyAgICBwZW5kaW5n
Q2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVn
aXN0ZXJFeHRlbnNpb25XaXRoSUQ6c2Vjb25kSUQgZGlzcGxheU5hbWU6QCJTZWNvbmRFeHRlbnNp
b24iIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgeworICAgICAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb24pOworCisgICAg
ICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworfQorCitURVNU
KFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCwgVW5yZWdpc3RlckV4dGVuc2lvbikKK3sKKyAgICBy
ZXNldEdsb2JhbFN0YXRlKCk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICB3ZWJWaWV3Q29uZmlndXJh
dGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtVSURlbGVnYXRl
Rm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbmV3XSk7CisKKyAgICBbd2ViVmlldyBz
ZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOkAiPGhlYWQ+PHRpdGxlPlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L3RpdGxlPjwvaGVh
ZD48Ym9keT48cD5GaWxsZXIgY29udGVudDwvcD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKworICAgIFtbd2ViVmlldyBfaW5z
cGVjdG9yXSBzaG93XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0dGFjaExv
Y2FsSW5zcGVjdG9yQ2FsbGVkKTsKKworICAgIGF1dG8gZmlyc3RJRCA9IFtOU1VVSUQgVVVJRF0u
VVVJRFN0cmluZzsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tJbnNwZWN0b3JFeHRlbnNpb24+
IGZvdW5kRXh0ZW5zaW9uOworCisgICAgLy8gVW5yZWdpc3RlciBhIGtub3duIGV4dGVuc2lvbi4K
KyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2lu
c3BlY3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6Zmlyc3RJRCBkaXNwbGF5TmFtZTpAIkZp
cnN0RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJy
b3IsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKKyAgICAg
ICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0ZW5zaW9u
KTsKKyAgICAgICAgZm91bmRFeHRlbnNpb24gPSBleHRlbnNpb247CisKKyAgICAgICAgW1t3ZWJW
aWV3IF9pbnNwZWN0b3JdIHVucmVnaXN0ZXJFeHRlbnNpb246Zm91bmRFeHRlbnNpb24uZ2V0KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAg
ICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgICAgIHBlbmRpbmdDYWxsYmFja1dh
c0NhbGxlZCA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKyAgICBFWFBFQ1RfTk9UX05V
TEwoZm91bmRFeHRlbnNpb24uZ2V0KCkpOworCisgICAgLy8gUmUtcmVnaXN0ZXIgYW4gZXh0ZW5z
aW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmll
dyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGRpc3BsYXlOYW1l
OkAiRmlyc3RFeHRlbnNpb24iIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJs
ZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRl
bnNpb24pOworICAgICAgICBmb3VuZEV4dGVuc2lvbiA9IGV4dGVuc2lvbjsKKworICAgICAgICBb
W3dlYlZpZXcgX2luc3BlY3Rvcl0gdW5yZWdpc3RlckV4dGVuc2lvbjpmb3VuZEV4dGVuc2lvbi5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKworICAgICAgICAgICAgcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworICAgIEVYUEVDVF9O
T1RfTlVMTChmb3VuZEV4dGVuc2lvbi5nZXQoKSk7CisKKyAgICAvLyBVbnJlZ2lzdGVyIGFuIGV4
dGVuc2lvbiB0d2ljZS4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAg
ICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gdW5yZWdpc3RlckV4dGVuc2lvbjpmb3VuZEV4dGVuc2lv
bi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsK
KyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2Vy
cm9yLmxvY2FsaXplZEZhaWx1cmVSZWFzb24gY29udGFpbnNTdHJpbmc6QCJJbnZhbGlkUmVxdWVz
dCJdKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVk
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
</data>
<flag name="commit-queue"
          id="429755"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413193</attachid>
            <date>2020-11-04 12:02:53 -0800</date>
            <delta_ts>2020-11-05 14:36:34 -0800</delta_ts>
            <desc>Patch v2.3</desc>
            <filename>bug-217783-20201104120252.patch</filename>
            <type>text/plain</type>
            <size>117277</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkOWZlMDcyNWRkZWMw
NGExZWJlZDhkYjgyMjRkY2I5ZTM3ZTdhMy4uMWEzYWEyMWI5ZmQwNGVlNmIxOWM0YjUzNjBlZDg3
ZWY4NTNkYTIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTExLTAzICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4
dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGV2aW4gUm91c3NvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aDoKKyAgICAgICAgSW4gb3JkZXIgZm9yIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ciB0byB3b3JrIHdpdGggcmVtb3RlIGFuZCBsb2NhbAorICAgICAgICBpbnNwZWN0b3JzLCBpdCBz
dG9yZXMgYSB3ZWFrIHBvaW50ZXIgdGhlIGluc3BlY3RvcidzIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LgorICAgICAgICBFeHBvc2UgdGhlIGZyb250ZW5kJ3MgcGFnZSBzbyB0aGF0IHRoZSBmcm9u
dGVuZCBBUEkgZGlzcGF0Y2hlciBjYW4gZGlzcGF0Y2ggdG8gaXQuCisKIDIwMjAtMTEtMDMgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgYWxpZ24taXRlbXMg
c2hvdWxkIGJlIGEgZGlzY3JldGUgYW5pbWF0YWJsZSBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKaW5kZXggYzAzYTUyYTExNTExOTAzZjI4N2RhOGYxZjg4MTE5OGU0NTM2ZjRhZS4uNjQ4
YWVjZGNmZDhiYzdjMWNiNDI3MDQxOWQzNDY1YzBkOWY3MmMyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMTAtMjIgIEJyaWFuIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9X
S0luc3BlY3RvckV4dGVuc2lvbiBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82OTk2ODc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDogQWRkIG5ldyBmaWxlcy4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanM6Cisg
ICAgICAgIChXSS5BcHBDb250cm9sbGVyQmFzZSk6CisgICAgICAgIChXSS5BcHBDb250cm9sbGVy
QmFzZS5wcm90b3R5cGUuZ2V0IGV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICBIYW5nIHRo
ZSBleHRlbnNpb24gY29udHJvbGxlciBvZmYgb2YgdGhlIGdsb2JhbCBzaW5nbGV0b24sIGFzIHRo
ZXJlIGNhbiBvbmx5IGJlIG9uZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLldlYklu
c3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAo
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5wcm90b3R5cGUudW5yZWdpc3RlckV4
dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3Igbm93LCBqdXN0IGtlZXAgdGhlIFVVSURzIGlu
IGEgbWFwIGFuZCBsb2cgdGhlIHJlc3VsdC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9k
ZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qczoKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4
dGVuc2lvbik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24ucHJvdG90eXBlLmdl
dCBleHRlbnNpb25JRCk6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24ucHJvdG90
eXBlLmdldCBkaXNwbGF5TmFtZSk6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIGEgZGF0YSBvYmpl
Y3QgZm9yIG5vdy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9y
RnJvbnRlbmRBUEkuanM6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5sb2FkQ29tcGxl
dGVkKToKKyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnJlZ2lzdGVyRXh0ZW5zaW9uKToK
KyAgICAgICAgKEluc3BlY3RvckZyb250ZW5kQVBJLnVucmVnaXN0ZXJFeHRlbnNpb24pOgorICAg
ICAgICBBZGRlZC4gRm9yd2FyZCBpbnZvY2F0aW9ucyB0byB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xs
ZXIuCisKIDIwMjAtMTEtMDQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IHVzZSB3ZWFrIGNvbGxlY3Rpb25zIGZvciBob2xkaW5nIGV2
ZW50IGxpc3RlbmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMzA2ODA2YmRjYzYwYmUyMGFmNmE0YWEzYmUzYjlm
MmU5ZDdmYjFiLi5mZTQ2ZDFhM2QzOThlZGM4M2FlOGE2MzNlNDlhNjZlNjI5NjIxOTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAyMC0xMC0yMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEluc3BlY3RvciBFeHRlbnNpb25zOiBBZGQgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uIGFuZCByZWxhdGVkIHBsdW1iaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3ODMKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzY5OTY4Nzg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKwor
ICAgICAgICBfV0tJbnNwZWN0b3JFeHRlbnNpb24gaXMgbmV3IFNQSSB0aGF0IHJlcHJlc2VudHMg
YSBXZWIgRXh0ZW5zaW9uIHRoYXQgdXNlcyB0aGUgJ2RldnRvb2xzJworICAgICAgICBBUEkgdG8g
aW50ZXJhY3Qgd2l0aCBXZWIgSW5zcGVjdG9yLiBBbiBleHRlbnNpb24gaXMgYXNzb2NpYXRlZCB3
aXRoIGl0cyBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LgorICAgICAgICBBIFdlYktpdCBjbGll
bnQgdGhhdCBzdXBwb3J0cyBXZWIgRXh0ZW5zaW9ucyBjYW4gdXNlIHRoaXMgY2xhc3MgdG8gaW1w
bGVtZW50ICdkZXZ0b29scycgZXh0ZW5zaW9uIEFQSXMuCisKKyAgICAgICAgQWRkIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcyB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBhbiBl
eHRlbnNpb24uCisgICAgICAgIEFkZCBwbHVtYmluZyBzbyB0aGF0IHRoZSBleHRlbnNpb24gaW4g
cmVnaXN0ZXJlZCBpbiB0aGUgZnJvbnRlbmQgd2l0aCBXSS5JbnNwZWN0b3JFeHRlbnNpb25Db250
cm9sbGVyLgorCisgICAgICAgIExhdGVyIHBhdGNoZXMgd2lsbCBmbGVzaCBvdXQgdGhlIG5lZWRl
ZCBmdW5jdGlvbmFsaXR5IHRvIGltcGxlbWVudCByZXN0IG9mIHRoZSAnZGV2dG9vbHMnIEFQSS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6
IElmIGEgbWVzc2FnZSBpbmNsdWRlcyBJbnNwZWN0b3JFeHRlbnNpb25FcnJvciwKKyAgICAgICAg
dGhlbiBnZW5lcmF0ZSBhbiBpbmNsdWRlIGZvciBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIHdo
ZXJlIGl0IGlzIGRlY2xhcmVkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoK
KyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmpl
Y3Q6Om5ld09iamVjdCk6CisgICAgICAgIE5ldyBBUEkgb2JqZWN0IHR5cGUuCisKKyAgICAgICAg
KiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaDogQWRkZWQgZXJyb3IgY29kZSBlbnVt
IGFuZCB1c2VmdWwgdHlwZSBhbGlhc2VzLgorICAgICAgICAqIFNoYXJlZC9JbnNwZWN0b3JFeHRl
bnNpb25UeXBlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Omluc3BlY3RvckV4dGVuc2lvbkVycm9y
VG9TdHJpbmcpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5jcHA6
CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKEFQ
STo6SW5zcGVjdG9yRXh0ZW5zaW9uOjpJbnNwZWN0b3JFeHRlbnNpb24pOgorICAgICAgICAoQVBJ
OjpJbnNwZWN0b3JFeHRlbnNpb246On5JbnNwZWN0b3JFeHRlbnNpb24pOgorICAgICAgICBBZGRl
ZC4gVGhpcyBpcyBhIHBsYWNlaG9sZGVyIG9iamVjdCB0aGF0J3MgdXNlZCBmb3IgdGhlIHdyYXBw
ZXIgc3lzdGVtLAorICAgICAgICBzaW5jZSB3ZSBkb24ndCBoYXZlIHNpbmdsZSBDKysgb2JqZWN0
cyBmb3IgZWFjaCBleHRlbnNpb24gdG8gYmFjayB0aGUgQVBJIG9iamVjdC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciByZWdp
c3RlckV4dGVuc2lvbldpdGhJRDpkaXNwbGF5TmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bX1dLSW5zcGVjdG9yIHVucmVnaXN0ZXJFeHRlbnNpb246Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgIEltcGxlbWVudCBuZXcgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBt
ZXRob2RzLiBTZW5kIElQQyB0byB0aGUgSW5zcGVjdG9yIHdlYiBwcm9jZXNzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbToKKyAgICAgICAg
KC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGluaXRXaXRoSWRlbnRpZmllcjpdKToKKyAgICAgICAg
KC1bX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uIF9hcGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uIGV4dGVuc2lvbklEXSk6CisgICAgICAgIEFkZGVkLiBUaGlzIGlzIGEgZGF0YSBvYmplY3Qg
dGhhdCdzIGFsc28gdXNlZCBhcyBhIHRva2VuIHRvIHVucmVnaXN0ZXIgdGhlIGV4dGVuc2lvbi4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9z
dC5oOiBBZGQgbmV3IFNQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckV4dGVuc2lvbkludGVybmFsLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAg
ICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgcmVnaXN0ZXJFeHRl
bnNpb25XaXRoSUQ6ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIHVucmVnaXN0ZXJFeHRlbnNpb246
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEltcGxlbWVudCBuZXcgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSG9zdCBtZXRob2RzLiBTZW5kIElQQyB0byB0aGUgSW5zcGVjdG9yIHdlYiBwcm9j
ZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkubWVzc2FnZXMuaW46IEFkZCBGcm9udGVuZExvYWRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmV4dGVuc2lvbkNvbnRyb2xsZXIgY29uc3QpOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5k
TG9hZGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0
ZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgIFNldCB1cCB0aGUgZXh0ZW5zaW9uIGNv
bnRyb2xsZXIgb2JqZWN0IGFmdGVyIHRoZSBmcm9udGVuZCBoYXMgYmVlbiBjcmVhdGVkLgorICAg
ICAgICBIb29rIHVwIHRoZSBGcm9udGVuZExvYWRlZCBldmVudCBzZW50IGZyb20gSW5zcGVjdG9y
IHdlYiBwcm9jZXNzIHNvIHRoYXQgdGhlCisgICAgICAgIGV4dGVuc2lvbiBjb250cm9sbGVyIGNh
biBiZSBub3RpZmllZCBvZiB3aGVuIGl0J3Mgc2FmZSB0byBtZXNzYWdlIHRoZSBmcm9udGVuZC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5k
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kTG9h
ZGVkKToKKyAgICAgICAgU2V0IHVwIHRoZSBleHRlbnNpb24gY29udHJvbGxlciBvYmplY3QgYWZ0
ZXIgdGhlIGZyb250ZW5kIGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5OjpleHRlbnNpb25Db250cm9sbGVyIGNvbnN0KTogQWRkZWQuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHk6OndoZW5Gcm9udGVuZEhhc0xvYWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjppbnNwZWN0b3JGcm9udGVuZExvYWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojpy
ZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgQWRkZWQu
IEZvcndhcmQgQVBJIHJlcXVlc3RzIHRvIHRoZSBXZWIgSW5zcGVjdG9yJ3Mgd2ViIHByb2Nlc3Mg
dG8gYmUgZXZhbHVhdGVkIGluIHRoZSBmcm9udGVuZC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hDb21tYW5kKToKKyAgICAgICAgQWRkIGEgbW9yZSBnZW5lcmljIHdheSB0byBlbmNv
ZGUgdmFsdWVzIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gSW5zcGVjdG9yRnJvbnRlbmRB
UEkuZGlzcGF0Y2guCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRQYWdlIGNvbnN0KTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJOjpmcm9udGVuZEFQSURpc3BhdGNoZXIpOiBB
ZGRlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp+V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5yZWdpc3RlckV4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21SZXN1bHQpOgorICAgICAgICBIYW5kbGUgaW5jb21p
bmcgbWVzc2FnZXMgYnkgZm9yd2FyZGluZyB0aGUgYXNzb2NpYXRlZCBjb21tYW5kIHRvIFdJLldl
YkV4dGVuc2lvbkNvbnRyb2xsZXIKKyAgICAgICAgdmlhIEluc3BlY3RvckZyb250ZW5kQVBJIGV2
YWx1YXRpb25zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVT
aGVldC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQu
bW06CisgICAgICAgIEZhbGxvdXQgZnJvbSB1bmlmaWVkIGJ1aWxkIGNodW5raW5nIHNoaWZ0cy4K
KwogMjAyMC0xMS0wMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAg
ICBTZXQgdXAgYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgZm9yIFNwZWVjaFJlY29nbml0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmlu
ZGV4IDBhNzlkODZiM2M0Njk3NzgxNGE2OGY0ZWFhZWRiOGE4ZWU5ZmZiYTMuLmU4ZDEzYTIxMWUw
NjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zNiwxNCArMzYsMTYgQEAK
ICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dhYmxlVHlwZS5oIgogI2luY2x1ZGUgIlVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyOworY2xhc3MgUGFnZTsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQgeworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IHsKIHB1YmxpYzoKICAgICBlbnVtIGNs
YXNzIERvY2tTaWRlIHsKICAgICAgICAgVW5kb2NrZWQgPSAwLApAQCAtMTExLDYgKzExMyw3IEBA
IHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRv
QmFja2VuZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXImIGZyb250ZW5kQVBJRGlzcGF0Y2hlcigpID0g
MDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhZ2UqIGZyb250ZW5kUGFnZSgpID0gMDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBpc1VuZGVyVGVzdCgpID0gMDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuaAppbmRleCAxMTgxYTIwOTZjMTc2MGRmMjI5MzI2MDEwNmM1ZDA5NWM0MWQz
NDFhLi5hZDE4ZjYwODA1ZDFjZTE2ZTY5NDJlZjMyNzAyOTk0ODQ1OWFlNzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmgKQEAgLTk1LDcgKzk1LDggQEAgcHVibGljOgogICAgIFN0cmluZyBiYWNrZW5kQ29tbWFu
ZHNVUkwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTdHJpbmcoKTsgfTsKIAogICAgIEluc3BlY3Rv
ckZyb250ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgZmluYWwgeyBy
ZXR1cm4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7IH0KLQorICAgIFBhZ2UqIGZyb250ZW5kUGFn
ZSgpIGZpbmFsIHsgcmV0dXJuIG1fZnJvbnRlbmRQYWdlOyB9CisgICAgCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjYW5BdHRhY2hXaW5kb3coKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dERvY2tpbmdVbmF2YWlsYWJsZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9s
bGVyQmFzZS5qcwppbmRleCA2MWQ0YzQ1OTQ0ZGI2Njk1NWQwMDA5NzNhM2U2ZGVhM2FlNjZlYTU2
Li4wMDI1Mzc0Yjc4ZDcwYzA3ZmZmZDhiYjNlNGFlMTJlMDM4OGViZjYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9s
bGVyQmFzZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qcwpAQCAtNDEsMTEgKzQxLDE0IEBAIFdJLkFwcENv
bnRyb2xsZXJCYXNlID0gY2xhc3MgQXBwQ29udHJvbGxlckJhc2UKICAgICBjb25zdHJ1Y3Rvcigp
CiAgICAgewogICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlOworCisgICAgICAgIHRo
aXMuX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBuZXcgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29u
dHJvbGxlcjsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBkZWJ1Z2dhYmxlVHlw
ZSgpIHsgdGhyb3cgV0kuTm90SW1wbGVtZW50ZWRFcnJvci5zdWJjbGFzc011c3RPdmVycmlkZSgp
OyB9CisgICAgZ2V0IGV4dGVuc2lvbkNvbnRyb2xsZXIoKSB7IHJldHVybiB0aGlzLl9leHRlbnNp
b25Db250cm9sbGVyOyB9CiAKICAgICAvLyBTaW5jZSB2YXJpb3VzIG1lbWJlcnMgb2YgdGhlIGFw
cCBjb250cm9sbGVyIGRlcGVuZCBvbiB0aGUgZ2xvYmFsIHNpbmdsZXRvbiB0byBleGlzdCwKICAg
ICAvLyBzb21lIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgYXBwIGNv
bnRyb2xsZXIgaGFzIGJlZW4gY29uc3RydWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25D
b250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmUz
OTZjMzQyNGY2MjQ3ZTAxYTBmYWY1MDljM2JiMjk3NzliMWVlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4
dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcigp
CisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbklETWFw
ID0gbmV3IE1hcDsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHJlZ2lzdGVyRXh0ZW5z
aW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9l
eHRlbnNpb25JRE1hcC5oYXMoZXh0ZW5zaW9uSUQpKSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJ
bnRlcm5hbEVycm9yKCJVbmFibGUgdG8gcmVnaXN0ZXIgZXh0ZW5zaW9uLCBpdCdzIGFscmVhZHkg
cmVnaXN0ZXJlZDogIiwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lKTsKKyAgICAgICAgICAgIHJl
dHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLlJlZ2lzdHJhdGlvbkZhaWxl
ZDsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBleHRlbnNpb24gPSBuZXcgV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CisgICAgICAgIHRoaXMuX2V4
dGVuc2lvbklETWFwLnNldChleHRlbnNpb25JRCwgZXh0ZW5zaW9uKTsKKworICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9s
bGVyLkV2ZW50LkV4dGVuc2lvbkFkZGVkLCB7ZXh0ZW5zaW9ufSk7CisgICAgfQorCisgICAgdW5y
ZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCkKKyAgICB7CisgICAgICAgIGxldCBleHRlbnNp
b24gPSB0aGlzLl9leHRlbnNpb25JRE1hcC50YWtlKGV4dGVuc2lvbklEKTsKKyAgICAgICAgaWYg
KCFleHRlbnNpb24pIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJs
ZSB0byB1bnJlZ2lzdGVyIGV4dGVuc2lvbiB3aXRoIHVua25vd24gSUQ6ICIsIGV4dGVuc2lvbklE
KTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2Rl
LkludmFsaWRSZXF1ZXN0OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudC5FeHRl
bnNpb25SZW1vdmVkLCB7ZXh0ZW5zaW9ufSk7CisgICAgfQorfTsKKworV0kuV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudCA9IHsKKyAgICBFeHRlbnNpb25BZGRlZDogImV4dGVu
c2lvbi1hZGRlZCIsCisgICAgRXh0ZW5zaW9uUmVtb3ZlZDogImV4dGVuc2lvbi1yZW1vdmVkIiwK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5k
ZXggZmFlM2NmODcyNmMwODc3NmVmMDMyYTVmYTQ5YmI1MjZkZWM0NTBiOC4uYjg2ZGY1ZmYwNTll
ZWJmODBlMDMyNDlmOGYzMzhjNTk1YjNlZDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtNDg0LDYgKzQ4NCw3IEBACiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9UeXBlRGVzY3JpcHRpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvVHlwZVNldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9VUkxCcmVha3BvaW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dl
Ykluc3BlY3RvckV4dGVuc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9XZWJTb2NrZXRSZXNvdXJjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9XcmFwcGVkUHJvbWlzZS5qcyI+PC9zY3JpcHQ+CiAKQEAgLTg5OCw2ICs4OTksNyBAQAogICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1dv
cmtlck1hbmFnZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L0RpYWdub3N0aWNDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2ZDllZGEyMzJiODM0OGEyYjk0OTY5NWIzZTY1
MjA0YzQ2NTk3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24gPSBjbGFzcyBXZWJJbnNw
ZWN0b3JFeHRlbnNpb24KK3sKKyAgICBjb25zdHJ1Y3RvcihleHRlbnNpb25JRCwgZGlzcGxheU5h
bWUpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgZXh0ZW5zaW9uSUQgPT09
ICJzdHJpbmciLCBleHRlbnNpb25JRCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBk
aXNwbGF5TmFtZSA9PT0gInN0cmluZyIsIGRpc3BsYXlOYW1lKTsKKworICAgICAgICB0aGlzLl9l
eHRlbnNpb25JRCA9IGV4dGVuc2lvbklEOworICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRp
c3BsYXlOYW1lOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGV4dGVuc2lvbklE
KCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uSUQ7IH0KKyAgICBnZXQgZGlzcGxheU5hbWUoKSB7
IHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTsgfQorfTsKKworLy8gTm90ZTogdGhlc2UgdmFsdWVz
IGFyZSBzeW5vbnltb3VzIHdpdGggdGhlIHZhbHVlcyBvZiBlbnVtIGNsYXNzIFdlYktpdDo6SW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3IuCitXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2Rl
ID0geworICAgIENvbnRleHREZXN0cm95ZWQ6ICJDb250ZXh0RGVzdHJveWVkIiwKKyAgICBJbnRl
cm5hbEVycm9yOiAiSW50ZXJuYWxFcnJvciIsCisgICAgSW52YWxpZFJlcXVlc3Q6ICJJbnZhbGlk
UmVxdWVzdCIsCisgICAgUmVnaXN0cmF0aW9uRmFpbGVkOiAiUmVnaXN0cmF0aW9uRmFpbGVkIiwK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCmluZGV4IDFkMWYyODhi
YjgzNGQ0ODJmNjRlMzllZjBmYmQ1Mzg2ZDg3NGRlZjAuLmY5ZDIwYWYxMWY0NmNjZGVkNjVkM2Rj
MWE5YjQ2ODNiZjRhZDZkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJ
LmpzCkBAIC0xOTYsNSArMTk2LDE3IEBAIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogICAgICAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goSW5zcGVjdG9yRnJvbnRlbmRBUEku
X3BlbmRpbmdDb21tYW5kc1tpXSk7CiAKICAgICAgICAgZGVsZXRlIEluc3BlY3RvckZyb250ZW5k
QVBJLl9wZW5kaW5nQ29tbWFuZHM7Ci0gICAgfQorICAgIH0sCisKKyAgICAvLyBSZXR1cm5zIGEg
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZSBpZiBhbiBlcnJvciBvY2N1cnJlZCwg
b3RoZXJ3aXNlIG5vdGhpbmcuCisgICAgcmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRp
c3BsYXlOYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25D
b250cm9sbGVyLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7Cisg
ICAgfSwKKworICAgIC8vIFJldHVybnMgYSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JD
b2RlIGlmIGFuIGVycm9yIG9jY3VycmVkLCBvdGhlcndpc2Ugbm90aGluZy4KKyAgICB1bnJlZ2lz
dGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklEKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLnNoYXJl
ZEFwcC5leHRlbnNpb25Db250cm9sbGVyLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQp
OworICAgIH0sCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVz
dC5odG1sCmluZGV4IDhiODQ2MmY4OTQ3Y2E5NTUxY2I3ZTNmNmFlNDg5NjM3OTQzM2JkMWUuLjMz
MzI0YWM0ZDkyM2FkZTAwNTFkNWY5MmQyZjM4NTNmMzRjOTJhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTIyMCw2ICsyMjAsNyBAQAog
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVGltZWxpbmVNYXJrZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvVVJMQnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvV2ViU29ja2V0UmVzb3VyY2UuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvV3JhcHBlZFByb21pc2UuanMiPjwvc2NyaXB0PgogCkBAIC0y
NjMsNiArMjY0LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUnVudGltZU1hbmFn
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UYXJnZXRNYW5h
Z2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVN
YW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL1dvcmtlck1hbmFnZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBz
cmM9IkNvbnRyb2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2OTQw
ZmQ0MTI1Zjk2NDc0ZmU0YzFkYTYyZTE4YjA2MTIxYzVkMTRjLi5hYjE1ZmJmNTFlZjM2OGZiZTQ3
NDUzNDBkMjYxN2MyZjczOGJjMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05NSw2ICs5NSw3IEBAICQoUFJPSkVDVF9ESVIpL1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9V
SVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCisk
KFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVBy
b2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2Fj
eUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNDIsNiArMTQzLDcg
QEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3Bs
YXlMYXllci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HZW9sb2NhdGlv
bi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKyQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgogJChQUk9KRUNU
X0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CmluZGV4IDgyZjY3NjdhMTlmOTMxYTZjNWNkMGI5MWI1YmQwODgzY2I3N2M1YTkuLjRl
YjEyNWU5YWRjNzY1YTVhZThkYzExNzU4N2VlM2U4N2M3N2E0MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzQ4LDYgKzM0OCw5IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlck1lc3NhZ2VzUmVwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2
ZXJNZXNzYWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVy
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyTWVzc2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNw
ZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1l
c3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggM2M5ODc5ZTJh
Y2RhZjk3MjQ0MjFlNGY1Y2E3ZTgyY2ZlNzY2N2Y3ZC4uYTc2YjM5NmZlMDUxMzk4NzBhMWIwMWMx
NGMxNDFkY2Y0NWE5MmM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTg0LDYg
KzE4NCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSSBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IgXAogCVdlYlBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJIFwKIAlXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDcyNjg3MmQ2OGQ5NTdmMDg5Yjc3MWEzZDU1NTlhMjMx
MWRiMzA1ZTYuLmMxYWU5NmM3Y2EyOTVjM2U1ZWJlYjc1YjNjM2MzNDI2OTUxNDE3NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjczLDYgKzY3Myw3IEBA
IGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9u
cyc6IFsnIldlYkZpbmRPcHRpb25zLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNv
Z25pemVyU3RhdGUnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2Vz
dHVyZVR5cGUnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6SW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3InOiBbJyJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIiddLAogICAg
ICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnOiBbJyJMYXllckhvc3RpbmdDb250
ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUnOiBbJyJMYXllclRy
ZWVDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNlc3Npb25T
dGF0ZS5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVj
dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDZkMDY1NjQ1
ZGNlZTYyZTU5ZDUwZGJlZjM3NDM1YTQ5YTgwZWI2ODIuLmI3YjdlZTY4OGFhNmZmODkwNWEyMWI3
NzhkNGQ5NjM1MjI1MTYzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAg
LTEzNyw2ICsxMzcsOSBAQCBwdWJsaWM6CiAgICAgICAgIEljb25EYXRhYmFzZSwKICAgICAgICAg
SW5zcGVjdG9yLAogICAgICAgICBJbnNwZWN0b3JDb25maWd1cmF0aW9uLAorI2lmIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICAgICAgSW5zcGVjdG9yRXh0ZW5zaW9uLAorI2VuZGlm
CiAgICAgICAgIEtleVZhbHVlU3RvcmFnZU1hbmFnZXIsCiAgICAgICAgIE1lZGlhQ2FjaGVNYW5h
Z2VyLAogICAgICAgICBNZXNzYWdlTGlzdGVuZXIsCkBAIC0zODIsNiArMzg1LDkgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBBUEk6
Ok9iamVjdDo6VHlwZTo6SWNvbkRhdGFiYXNlLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6
SW5zcGVjdG9yLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yQ29uZmlndXJh
dGlvbiwKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgICAgIEFQSTo6T2Jq
ZWN0OjpUeXBlOjpJbnNwZWN0b3JFeHRlbnNpb24sCisjZW5kaWYKICAgICAgICAgQVBJOjpPYmpl
Y3Q6OlR5cGU6OktleVZhbHVlU3RvcmFnZU1hbmFnZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpU
eXBlOjpNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lc3Nh
Z2VMaXN0ZW5lciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9i
amVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCBj
OTQyMGNkNWYyMGRiMTE5OWEyZmYwYTUzNWNlMDA5Y2Y5Mjg2NWE0Li5mOGEwMjhiMDZiNTEwNjEw
OGRkYzNjYmI2OGE0MDFiZmEzNWY3ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCkBAIC05OSw2ICs5OSwxMCBAQAogI2ltcG9ydCAiX1dLQXBwbGljYXRpb25NYW5p
ZmVzdEludGVybmFsLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9O
UykKKyNpbXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCisjZW5kaWYKKwog
c3RhdGljIGNvbnN0IHNpemVfdCBtaW5pbXVtT2JqZWN0QWxpZ25tZW50ID0gYWxpZ25vZihzdGQ6
OmFsaWduZWRfc3RvcmFnZTxzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPjo6dHlw
ZSk7CiBzdGF0aWNfYXNzZXJ0KG1pbmltdW1PYmplY3RBbGlnbm1lbnQgPj0gYWxpZ25vZih2b2lk
KiksICJPYmplY3RzIHNob3VsZCBhbHdheXMgYmUgYXQgbGVhc3QgcG9pbnRlci1hbGlnbmVkLiIp
Owogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0cmFTcGFjZUZvckFsaWdubWVudCA9IG1p
bmltdW1PYmplY3RBbGlnbm1lbnQgLSBhbGlnbm9mKHZvaWQqKTsKQEAgLTI3MCw2ICsyNzQsMTIg
QEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAg
ICAgd3JhcHBlciA9IFtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXTsKICAgICAgICAg
YnJlYWs7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgY2FzZSBUeXBl
OjpJbnNwZWN0b3JFeHRlbnNpb246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKwogICAgIGNhc2UgVHlwZTo6
TmF2aWdhdGlvbjoKICAgICAgICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4
dGVuc2lvblR5cGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lv
blR5cGVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjYyZDNkODIxZTlhNmQ4YTAyZGY5OWEwNDRiYzdiYmI5
MDNmYmVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9y
RXh0ZW5zaW9uVHlwZXMuY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKworI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV1RGOjpTdHJpbmcgaW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3JUb1N0cmluZyhJbnNwZWN0b3JFeHRlbnNpb25FcnJvciBlcnJvcikKK3sKKyAg
ICBzd2l0Y2ggKGVycm9yKSB7CisgICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50
ZXJuYWxFcnJvcjoKKyAgICAgICAgcmV0dXJuICJJbnRlcm5hbEVycm9yIl9zOworICAgIGNhc2Ug
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0OgorICAgICAgICByZXR1cm4g
IkludmFsaWRSZXF1ZXN0Il9zOworICAgIGNhc2UgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNv
bnRleHREZXN0cm95ZWQ6CisgICAgICAgIHJldHVybiAiQ29udGV4dERlc3Ryb3llZCJfczsKKyAg
ICBjYXNlIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQ6CisgICAg
ICAgIHJldHVybiAiUmVnaXN0cmF0aW9uRmFpbGVkIl9zOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAiSW50ZXJuYWxFcnJvciI7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWYzZjVlYmZiOGQxNzA1MmQwYjM2ZWEyNzRjY2ZmNWQ3MDM2NWE0ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIEluc3BlY3RvckV4dGVuc2lvblRhYklEID0gV1RGOjpT
dHJpbmc7Cit1c2luZyBJbnNwZWN0b3JFeHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOworCitlbnVt
IGNsYXNzIEluc3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CisgICAgQ29udGV4dERl
c3Ryb3llZCwKKyAgICBJbnRlcm5hbEVycm9yLAorICAgIEludmFsaWRSZXF1ZXN0LAorICAgIFJl
Z2lzdHJhdGlvbkZhaWxlZCwKK307CisKK1dURjo6U3RyaW5nIGluc3BlY3RvckV4dGVuc2lvbkVy
cm9yVG9TdHJpbmcoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IpOworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCisgICAg
ICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAorICAg
ICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkLAor
ICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWls
ZWQKKyAgICA+OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggZDUyNzlmZTYyMjk2M2YwNzQ3MzhhYzFlZTU0YzM3NGRjYmU3
YjUyNy4uMzUxYWY0Mjc4Yzk4NTk1OWFlY2ZiMTVkYmYwYWI3Y2I1ZTIwNGI3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC0xNjEsNiArMTYxLDcgQEAgU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKIFNoYXJlZC9F
ZGl0b3JTdGF0ZS5jcHAKIFNoYXJlZC9Gb250SW5mby5jcHAKIFNoYXJlZC9GcmFtZUluZm9EYXRh
LmNwcAorU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAogU2hhcmVkL0xheWVyVHJl
ZUNvbnRleHQuY3BwCiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCiBTaGFyZWQvTmF2aWdhdGlv
bkFjdGlvbkRhdGEuY3BwCkBAIC00MzcsNiArNDM4LDcgQEAgVUlQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzUHJveHkuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL0luc3BlY3RvclRhcmdldFByb3h5LmNw
cAogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKIFVJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCitVSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAogVUlQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dl
YlBhZ2VEZWJ1Z2dhYmxlLmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTU1MCw2ICs1NTIsNyBAQCBXZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3IuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVy
LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCitXZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCiBXZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAogV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDk5YmVhMWZiNTllOTZkNmEwMGVmMWJiYTA4YTcyNGIxZjI4ODcw
MDQuLjYwNWVhODNmMTBkNGIwYWNkN2EzNDZmYzEzZTI3YjU0ZDZlZjg1MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTI1OSw2ICsyNTksNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3Rvci5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9u
Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW0KIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0KK1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvcldpbmRvdy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnRlcm5hbERlYnVnRmVh
dHVyZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZTBmMThhZmUyYzk0ZWM5NzUyN2Y2YjdhZmI0MGRhY2VlZTA0ODBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3Rv
ckV4dGVuc2lvbi5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFz
cyBJbnNwZWN0b3JFeHRlbnNpb24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPE9iamVj
dDo6VHlwZTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJ
bnNwZWN0b3JFeHRlbnNpb24+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckV4dGVuc2lvbihp
ZGVudGlmaWVyKSk7CisgICAgfQorCisgICAgZXhwbGljaXQgSW5zcGVjdG9yRXh0ZW5zaW9uKGNv
bnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFdURjo6
U3RyaW5nIG1faWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5oCmluZGV4IDE4OTllODE4YjM2M2U4NWQ0NjBi
MzA5NzNiNGFhMGQ0ODg5OTU5OWUuLjg2YjFjZjg5NjI3OGYxOTcyYjlhNzk5N2M0OTI3NGQxZWVk
Y2NmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yLmgKQEAgLTI1LDE3ICsyNSwxNSBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktp
dC9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CiAKIEBjbGFzcyBXS1dlYlZpZXc7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CitAY2xhc3MgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uOwogQHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlOwogCi1O
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgotCi1AcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
SG9zdAotLSAodm9pZCljbG9zZTsKLUBlbmQKLQogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEw
LjE0LjQpLCBpb3MoMTIuMikpCiBAaW50ZXJmYWNlIF9XS0luc3BlY3RvciA6IE5TT2JqZWN0IDxf
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0PgogCkBAIC01Miw2ICs1MCw3IEBAIFdLX0NMQVNTX0FW
QUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKQogCiAtICh2b2lkKWNvbm5lY3Q7CiAt
ICh2b2lkKXNob3c7CistICh2b2lkKWNsb3NlOwogLSAodm9pZCloaWRlOwogLSAodm9pZClzaG93
Q29uc29sZTsKIC0gKHZvaWQpc2hvd1Jlc291cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4IDY3MzQxMWYzMGVmMWQxMDhl
MWQ0NDQ3NDE5NGJjY2E4ZjkzZDFmNmIuLjZjMDBiOTZkZDE5NWQwMThmNmYzNjMyOTdiOGU5YWY0
MzY2YzRlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3Rvci5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50
ZXJuYWwuaCIKIAogI2ltcG9ydCAiSW5zcGVjdG9yRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLRXJy
b3IuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJv
eHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtMzcsNiArMzgsMTMgQEAKICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVjdG9y
RXh0ZW5zaW9uLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0
b3IKIAogLy8gTUFSSzogX1dLSW5zcGVjdG9yIG1ldGhvZHMKQEAgLTE5NCw0ICsyMDIsMzggQEAg
LSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKICAgICByZXR1cm4gKl9pbnNwZWN0b3I7CiB9CiAK
Ky8vIE1BUks6IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcworCistICh2b2lkKXJl
Z2lzdGVyRXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1l
OihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJy
b3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYg
RU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNv
bnRyb2xsZXIoKS5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtw
cm90ZWN0ZWRFeHRlbnNpb25JRCA9IHJldGFpblB0cihleHRlbnNpb25JRCksIHByb3RlY3RlZFNl
bGYgPSByZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAg
ICAgIGNhcHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4g
Y29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25F
cnJvcktleTogaW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9
XSwgbmlsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhcHR1
cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShw
cm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdKTsKKyAgICB9
KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWlu
OldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOwor
I2VuZGlmCit9CisKKy0gKHZvaWQpdW5yZWdpc3RlckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uICopZXh0ZW5zaW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisg
ICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnVucmVnaXN0ZXJFeHRlbnNpb24o
ZXh0ZW5zaW9uLmV4dGVuc2lvbklELCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwg
Y2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3Rl
ZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUg
eworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNF
cnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVz
ZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JFeHRl
bnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsKTsKKyAgICB9KTsKKyNl
bHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKKyNlbmRpZgorfQor
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM1YTYwMWVkMmNmMzE0ZTdhOGJm
ODYyMzllODBiNGIxYWE5YmM4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtMCwwICsxLDQwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dL
X0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSkKK0BpbnRlcmZhY2UgX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJ
TEFCTEU7CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKmV4dGVu
c2lvbklEOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24u
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2Y3ZGU5NDNkNWFjMzEzMWZkMTU3ZmM4ZmI1ODU5ZjEyNzE4NDEzMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3JFeHRlbnNpb24ubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIK
KworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklECit7Cisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAg
ICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9u
PihzZWxmLCBleHRlbnNpb25JRCk7CisgICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZv
aWQpZGVhbGxvYworeworICAgIF9leHRlbnNpb24tPkFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjp+
SW5zcGVjdG9yRXh0ZW5zaW9uKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKworLSAo
QVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9leHRlbnNpb247Cit9CisK
Ky8vIE1BUks6IFByb3BlcnRpZXMuCisKKy0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKK3sKKyAg
ICByZXR1cm4gX2V4dGVuc2lvbi0+aWRlbnRpZmllcigpOworfQorCisjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckV4dGVuc2lvbkhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3JFeHRlbnNpb25Ib3N0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg3ZDk2Mzk4MjcxY2EzZmIxZTk5
MTM3NDI0OGRiZGQ3ZDQzMzUxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmgKQEAgLTAsMCArMSw2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgor
CitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOworCitAcHJvdG9jb2wgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSG9zdAorQG9wdGlvbmFsCisKKy8qKgorICogQGFic3RyYWN0IFJlZ2lzdGVycyBh
IFdlYiBFeHRlbnNpb24gd2l0aCB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yLgorICogQHBh
cmFtIGV4dGVuc2lvbklEIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBleHRlbnNpb24uCisg
KiBAcGFyYW0gZGlzcGxheU5hbWUgQSBsb2NhbGl6ZWQgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0
ZW5zaW9uLgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRs
ZXIgdG8gYmUgY2FsbGVkIHdoZW4gcmVnaXN0cmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgorICoK
KyAqIFdlYiBFeHRlbnNpb25zIGluIFdlYiBJbnNwZWN0b3IgYXJlIGFjdGl2ZSBhcyBzb29uIGFz
IHRoZXkgYXJlIHJlZ2lzdGVyZWQuCisgKi8KKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRo
SUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxh
eU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyoq
CisgKiBAYWJzdHJhY3QgVW5yZWdpc3RlcnMgYSBXZWIgRXh0ZW5zaW9uIHdpdGggdGhlIGFzc29j
aWF0ZWQgV2ViIEluc3BlY3Rvci4KKyAqIEBwYXJhbSBleHRlbnNpb25JRCBBIHVuaXF1ZSBpZGVu
dGlmaWVyIGZvciB0aGUgZXh0ZW5zaW9uLgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRo
ZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdW5yZWdpc3RlcmluZyBzdWNj
ZWVkcyBvciBmYWlscy4KKyAqCisgKiBVbnJlZ2lzdGVyaW5nIGFuIGV4dGVuc2lvbiB3aWxsIGF1
dG9tYXRpY2FsbHkgY2xvc2UgYW55IGFzc29jaWF0ZWQgc2lkZWJhcnMvdGFicy4KKyAqLworLSAo
dm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNp
b24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxl
dGlvbkhhbmRsZXI7CisKKy8qKgorICogQGFic3RyYWN0IENsb3NlcyB0aGUgYXNzb2NpYXRlZCBX
ZWIgSW5zcGVjdG9yIGluc3RhbmNlLiBUaGlzIHdpbGwgY2F1c2UgYWxsCisgKiByZWdpc3RlcmVk
IF9XS0luc3BlY3RvckV4dGVuc2lvbnMgdG8gYmUgdW5yZWdpc3RlcmVkIGFuZCBpbnZhbGlkYXRl
ZC4KKyAqLworLSAodm9pZCljbG9zZTsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwYzQ1ZDU0MDg4MWQ1
NGY4NzQ3ZDIxNTY0MmNkODhhZmM5ZDBkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaApA
QCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQgIkFQ
SUluc3BlY3RvckV4dGVuc2lvbi5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0
b3JFeHRlbnNpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tJbnNwZWN0b3JFeHRl
bnNpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworTlNfQVNTVU1FX05PTk5VTExf
QkVHSU4KKworQGludGVyZmFjZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKCkgPFdLT2JqZWN0PiB7
CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckV4dGVuc2lv
bj4gX2V4dGVuc2lvbjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjoo
TlNTdHJpbmcgKilleHRlbnNpb25JZGVudGlmaWVyOworCitAZW5kCisKK05TX0FTU1VNRV9OT05O
VUxMX0VORAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaAppbmRleCBiOWE4YjIwMjAwNTI5
YTQyZGE0YWZjMjNkNGZkNGNmMTIwYzg2ODFjLi5iYTNmYzEzM2IzZmE1NjAyYTdmZDRiNzVmOTJi
YjQzMmM2OGU0NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIuaApAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRp
b24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmg+CiAKICNp
ZiAhVEFSR0VUX09TX0lQSE9ORQogCkBAIC00NCw3ICs0NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIFdLUmVtb3RlV2ViSW5zcGVjdG9yRGVidWdnYWJsZVR5cGUpIHsKIH0gV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xMi4zKSwgaW9zKDEwLjMpKTsKIAogV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zKDEwLjEyLjMpLCBpb3MoMTAuMykpCi1AaW50ZXJmYWNlIF9XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyIDogTlNPYmplY3QKK0BpbnRlcmZhY2UgX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgOiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9u
SG9zdD4KIAogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPF9XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggNGU0MGI4YjdhNzVmNWY3MDM1
NWQwMWRkNzU1N2NkYjFiYWFmYzQ0Yy4uOTFiZDU4ZjRkMTIyOGI4ZmU0ZjUwMWQyYzhmOGE1ZDBh
NzNlYTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5t
bQpAQCAtMzYsNiArMzYsMTQgQEAKICNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5o
IgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVj
dG9yRXh0ZW5zaW9uLmgiCisjaW1wb3J0ICJXS0Vycm9yLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2VuZGlmCisKIE5T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIgKCkKQEAgLTE4Miw2ICsxOTAsNDAgQEAgLSAodm9pZClfc2V0RGlhZ25v
c3RpY0xvZ2dpbmdEZWxlZ2F0ZTooaWQ8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4gX051
bGxhYmwKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXREaWFnbm9zdGljTG9nZ2luZ0F2
YWlsYWJsZSghIWRlbGVnYXRlKTsKIH0KIAorLy8gTUFSSzogX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
SG9zdCBtZXRob2RzCisKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5n
ICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisg
ICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVy
RXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklE
ID0gcmV0YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBl
Y3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFi
bGUgeworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhb
TlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3du
IHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JF
eHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3Jh
cHBlcihBUEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklE
LmdldCgpKSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOworICAgIH0pOworI2Vsc2UKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2Rl
OldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CisjZW5kaWYKK30KKworLSAodm9p
ZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24g
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgor
eworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX3JlbW90ZUluc3BlY3Rv
clByb3h5LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNp
b24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJl
ZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2ws
IFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86
QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IGluc3BlY3RvckV4dGVuc2lvbkVy
cm9yVG9TdHJpbmcocmVzdWx0LmVycm9yKCkpfV0pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwpOworICAgIH0pOworI2Vsc2UKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFp
biBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOworI2VuZGlmCit9CisKIEBlbmQK
IAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBi
MDQ3MzkzMWQ3MzEwZjI1OGU5YmVjY2U3MGNlNTIyYzg5YTdlOWU0Li5mNWEwMjJlYTJlMGM5NzNk
YjgzMjlmMDg4YzU4YzcwMTkzYjA5M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAg
LTM2LDYgKzM2LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC05NSw2ICs5OSwxMyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIG1faW5z
cGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNz
YWdlVG9Gcm9udGVuZChtZXNzYWdlKSk7CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OmZyb250ZW5kTG9hZGVkKCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisgICAgbV9leHRlbnNpb25Db250cm9sbGVyLT5pbnNwZWN0b3JGcm9udGVuZExvYWRlZCgpOwor
I2VuZGlmCit9CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kRGlkQ2xv
c2UoKQogewogICAgIFJlZjxSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4gcHJvdGVjdCgqdGhpcyk7
CkBAIC0xNzUsNiArMTg2LDEwIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0
ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCksICp0aGlz
KTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNl
VVJMKCptX2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJM
KCkpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9u
Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
UHJveHk+KCptX2luc3BlY3RvclBhZ2UpOworI2VuZGlmCiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5LmgKaW5kZXggYzAzYTJjYTU3MGQ5ZjZmODBlYmFhZTU0ZmI5M2FkMjU3MGNiNWZhYS4uMGYx
YzA5OGY0MzU5ZDQzZTViZTg1ZGYxN2I2Yjg2NTNmMTBlYjQxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5LmgKQEAgLTU2LDYgKzU2LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlZpZXc7Cisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHk7CisjZW5kaWYKIAogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlDbGllbnQgewogcHVibGljOgpAQCAtODgsNiArOTEsMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICpt
X2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0KKyNlbmRpZgorICAgIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBOU1dpbmRvdyAqd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3cuZ2V0KCk7IH0K
ICAgICBXS1dlYlZpZXcgKndlYlZpZXcoKSBjb25zdDsKQEAgLTExNyw2ICsxMjQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBtZXNz
YWdlcy4KKyAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCk7CiAgICAgdm9pZCBmcm9udGVuZERpZENs
b3NlKCk7CiAgICAgdm9pZCByZW9wZW4oKTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKTsKQEAgLTE0
OSw2ICsxNTcsMTAgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVu
dCogbV9jbGllbnQgeyBudWxscHRyIH07CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBh
Z2UgeyBudWxscHRyIH07CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBt
X2V4dGVuc2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKKyAgICAKICAgICBSZWY8QVBJOjpEZWJ1Z2dh
YmxlSW5mbz4gbV9kZWJ1Z2dhYmxlSW5mbzsKICAgICBTdHJpbmcgbV9iYWNrZW5kQ29tbWFuZHNV
Ukw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzYmVm
ZmQ1MWFkOTRiZjA1NWU0OTcyYjZjY2RmMjkyNzc5MjY0ZjIxLi42NzRiZWMzMjQ2ZDM4ODkzZDU1
MmU0NjZiN2VkN2VjZDJlMDhmZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0yMSw2ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5IHsKKyAgICBGcm9udGVuZExvYWRlZCgpCiAgICAgRnJv
bnRlbmREaWRDbG9zZSgpCiAgICAgUmVvcGVuKCkKICAgICBSZXNldFN0YXRlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHku
Y3BwCmluZGV4IGYwZjdiMmRmNWU0MTkyYWM0NTQ4YjhmN2JjYjk5N2QxZjEzMGQ0NjAuLjA4MGIx
NThmMDFmN2JkOTZiMTAwMTQ0MTRkNTVjNGM3OGNhNTZhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyLmgiCkBAIC00MjEsNiArNDIyLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmNyZWF0ZUZyb250ZW5kUGFnZSgpCiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+aWRlbnRpZmllcigpLCAqdGhpcyk7CiAg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgq
bV9pbnNwZWN0b3JQYWdlLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsK
KworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRy
b2xsZXIgPSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
PigqbV9pbnNwZWN0b3JQYWdlKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRl
c3QpCkBAIC01NDYsNiArNTUxLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJv
bnRlbmRQYWdlQW5kV2luZG93KCkKICAgICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0
Zm9ybURldGFjaCgpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1f
ZXh0ZW5zaW9uQ29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKKyAgICAKICAgICAvLyBOdWxs
IG91dCBtX2luc3BlY3RvclBhZ2UgYWZ0ZXIgcGxhdGZvcm1EZXRhY2goKSwgc28gdGhlIHZpZXdz
IGNhbiBiZSBjbGVhbmVkIHVwIGNvcnJlY3RseS4KICAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxs
cHRyOwogCkBAIC01NzEsNiArNTgwLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmZyb250
ZW5kTG9hZGVkKCkKIAogICAgIGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAg
ICAgICAgYXV0b21hdGlvblNlc3Npb24tPmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCptX2luc3Bl
Y3RlZFBhZ2UpOworICAgIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBt
X2V4dGVuc2lvbkNvbnRyb2xsZXItPmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YnJpbmdUb0Zyb250KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKaW5k
ZXggMTRkNDc3ZThkNzlhMWMzOTc5YWM1YTg5NzYwYmMzZGYwZjVlOWM4NC4uZjU1NDFiZjcwMjgx
N2ViYzhiZTM2NTI1ZGFjMzA5Zjg2NTQ1OGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRG
T1JNKE1BQykKQEAgLTY5LDYgKzcwLDkgQEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdl
Ykluc3BlY3RvclByb3h5Q2xpZW50OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJl
ZmVyZW5jZXM7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk7CisjZW5kaWYKIAogZW51bSBjbGFzcyBB
dHRhY2htZW50U2lkZSB7CiAgICAgQm90dG9tLApAQCAtODAsNiArODQsNyBAQCBjbGFzcyBXZWJJ
bnNwZWN0b3JQcm94eQogICAgIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6SW5zcGVjdG9yPgogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAg
LCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwKKyAgICAsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJJbnNwZWN0b3JQcm94eT4KICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBwdWJs
aWMgV2ViQ29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyCiAjZW5kaWYKQEAgLTEwMiw2ICsxMDcs
MTAgQEAgcHVibGljOgogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5zcGVjdGVkUGFnZTsgfQogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsgfQogCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5JiBleHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29u
dHJvbGxlcjsgfQorI2VuZGlmCisKICAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1
cm4gISFtX2luc3BlY3RvclBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNWaXNpYmxlOyB9CiAgICAgYm9vbCBpc0Zyb250KCk7CkBAIC0yODYsNiArMjk1LDEw
IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRy
IH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yQ2xpZW50PiBtX2luc3BlY3Rv
ckNsaWVudDsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5z
aW9uQ29udHJvbGxlcjsKKyNlbmRpZgorICAgIAogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9pc1Zpc2libGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0F0dGFj
aGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiOWFiZDcwYmQwZmY2MzM5ZTIyYjM4MzlmZTdlMzFi
ZGYyNjNmOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0wLDAg
KzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSkKKyAgICA6IG1faW5zcGVjdG9y
UGFnZShtYWtlV2Vha1B0cihpbnNwZWN0b3JQYWdlKSkKK3sKK30KKworV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eSgpCit7CisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CisKKyAgICBhdXRvIGNhbGxiYWNrcyA9
IHN0ZDo6ZXhjaGFuZ2UobV9mcm9udGVuZExvYWRlZENhbGxiYWNrUXVldWUsIHsgfSk7CisgICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soKTsKK30K
Kwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6d2hlbkZyb250
ZW5kSGFzTG9hZGVkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9m
cm9udGVuZExvYWRlZCAmJiBtX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1
ZXVlLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk6Omluc3BlY3RvckZyb250ZW5kTG9hZGVkKCkKK3sKKyAg
ICBBU1NFUlQobV9pbnNwZWN0b3JQYWdlKTsKKworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVl
OworCisgICAgYXV0byBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRlbmRMb2FkZWRD
YWxsYmFja1F1ZXVlLCB7IH0pOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3Mp
CisgICAgICAgIGNhbGxiYWNrKCk7Cit9CisKKy8vIEFQSQorCit2b2lkIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0
b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHdoZW5Gcm9udGVuZEhhc0xv
YWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlO
YW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9y
UGFnZSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
cjo6UmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCwgZGlzcGxheU5hbWUgfSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3Bl
Y3RvckV4dGVuc2lvbklEJiBleHRlbnNpb25JRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdl
YWtUaGlzLT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1f
aW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXI6OlVucmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCB9
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMDM0MTBhYjRmMTRjOWE4NDFhMDM5YmY4YTM5YTVhMjJiYjc3MGRkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlclByb3h5LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVk
ZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5IGZpbmFsCisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KTsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJv
eHkmIGluc3BlY3RvclBhZ2UpOworICAgIHZpcnR1YWwgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5KCk7CisKKyAgICAvLyBBUEkuCisgICAgdm9pZCByZWdpc3RlckV4dGVu
c2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JF
eHRlbnNpb25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3Qg
SW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CisKKyAgICAvLyBOb3RpZmlj
YXRpb25zLgorICAgIHZvaWQgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYpOworCisg
ICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1faW5zcGVjdG9yUGFnZTsKKworICAgIC8vIFVzZWQg
dG8gcXVldWUgYWN0aW9ucyBzdWNoIGFzIHJlZ2lzdGVyaW5nIGV4dGVuc2lvbnMgdGhhdCBoYXBw
ZW4gZWFybHkgb24uCisgICAgLy8gVGhlcmUncyBubyBwb2ludCBzZW5kaW5nIHRoZXNlIGJlZm9y
ZSB0aGUgZnJvbnRlbmQgaXMgZnVsbHkgbG9hZGVkLgorICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lk
KCk+PiBtX2Zyb250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZTsKKworICAgIGJvb2wgbV9mcm9udGVu
ZExvYWRlZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYyZDM3NTFjZDFmZmQ3YWFjZmUyM2Jh
ZjllNjY1ZTAzYWE3ZjdhMWQuLjc3OWM1MjEyNDFmYzdmNDZmNjc4NjFhNzliMzUxZmE4MmUxNzZk
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTQzNyw4ICsxNDM3LDE1IEBACiAJCTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5MyAvKiBB
dXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYyMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9u
UHJvdG9jb2xPYmplY3RzLmNwcCAqLzsgfTsKIAkJOTk1NUE2RjcxQzc5ODZFNTAwRUI2QTkzIC8q
IEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9u
UHJvdG9jb2xPYmplY3RzLmggKi87IH07CiAJCTk5Nzg4QUNCMUY0MjFEREEwMEMwODAwMCAvKiBf
V0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzg4QUM5MUY0MjFEQ0EwMEMwODAwMCAvKiBfV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTc5NjU5RTI1MzEwQTQ5MDBCMzFBRTMgLyogV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzk2NTlBMjUzMTBBNDgwMEIzMUFFMyAv
KiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovOyB9OworCQk5
OTc5NjU5RjI1MzEwQTQ5MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5Nzk2NTlCMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5OTc5NjVBMzI1
MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1QTIyNTMxMjhDNzAwQjMx
QUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTc5Q0E1ODIzN0Y0OUYxMDAzOUVDMDUgLyog
X1dLSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
OTk5NkE5RjI1MDA0QkNDMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3Rpbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5OTk2QTlE
MjUwMDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5QjE2NzU3MjUy
QkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAv
KiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk5OUIxNjc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5QjE2NzU1MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRl
bnNpb25JbnRlcm5hbC5oICovOyB9OworCQk5OUIxNjc1QjI1MkJCQUREMDA3MzE0MEUgLyogV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzVBMjUyQkJBREQwMDczMTQwRSAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oICovOyB9OworCQk5OUIxNjc2
NDI1MkJCRTYyMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc2MTI1
MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggKi87
IH07CiAJCTk5QzNBRTJEMURBREE2QUQwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1h
Y3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlD
M0FFMkMxREFEQTZBNzAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggKi87
IH07CiAJCTk5QzgxRDVBMUMyMEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1NTFDMjBE
RkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovOyB9OwogCQk5OUM4MUQ1RDFDMjFG
MzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQ
SUF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKQEAgLTQ1NzMsOSArNDU4MCwyMyBAQAogCQk5OTU1
QTZGMzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMu
aDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTk3ODhBQzkxRjQyMURD
QTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQ0ExRjQyMURDQTAwQzA4
MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJh
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk3OTY1OUEyNTMxMEE0ODAw
QjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTk5Nzk2NTlCMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTk3OTY1QTIyNTMxMjhDNzAwQjMxQUUzIC8q
IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OTk2QTlEMjUwMDRCQ0IwMDRGNzU1OSAv
KiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OTk5NkE5RTI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9y
VGVzdGluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0lu
c3BlY3RvclRlc3RpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5OUI3RUQ4
MjU1MEU0QTgwMEY0NTBBNCAvKiBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRl
bnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzU1MjUyQkI3RTEw
MDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc1NjI1MkJCN0UxMDA3MzE0MEUgLyogX1dL
SW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NjAyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc2MTI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5OUIxNjc2MjI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCRTNCMTIyNTQyMkY0MTAwQzY1NTFDIC8qIEFQSUluc3Bl
Y3RvckV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbnNw
ZWN0b3JFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCRTNCMTYy
NTQzM0I5NDAwQzY1NTFDIC8qIEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5QzNBRTIzMURBRDhFMzQwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25T
ZXNzaW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUMzQUUyNjFEQUQ5
NDg1MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNBRTJDMURBREE2QTcwMEFGNUMxNiAv
KiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNjE0Niw2ICs2MTY3LDggQEAKIAkJCQk1QzEyMUU4MzI0MTAxRjcwMDA0ODZG
OUIgLyogRnJhbWVUcmVlTm9kZURhdGEuaCAqLywKIAkJCQkxQUM3NUExQTFCMzM2ODI3MDA1Njc0
NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyLmggKi8sCiAJCQkJQkNDRjZCMjMxMkM5M0U3QTAw
OEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oICovLAorCQkJCTk5OUI3RUQ4MjU1MEU0QTgwMEY0NTBB
NCAvKiBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAgKi8sCisJCQkJOTlCRTNCMTYyNTQzM0I5
NDAwQzY1NTFDIC8qIEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmggKi8sCiAJCQkJMUE5MkRDMTIx
MkY4QkFCOTAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuY3BwICovLAogCQkJCTFBOTJEQzEw
MTJGOEJBNDYwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmggKi8sCiAJCQkJMkQxMDg3NUUx
RDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCAqLywKQEAgLTczNjEsNiArNzM4
NCwxMCBAQAogCQkJCTk5MUY0OTJFMjNBODEyQzYwMDU0NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1
Z2dhYmxlSW5mby5tbSAqLywKIAkJCQk5OTAzNkFFMTIzQTk0OUNFMDAwMEIwNkEgLyogX1dLSW5z
cGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oICovLAogCQkJCTkxOTc5NDBCMjNEQkM1MDMw
MDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAorCQkJCTk5QjE2NzU0MjUyQkI3
RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKKwkJCQk5OUIxNjc1NjI1
MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovLAorCQkJCTk5Nzk2
NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggKi8sCisJ
CQkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVy
bmFsLmggKi8sCiAJCQkJNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvcklu
dGVybmFsLmggKi8sCiAJCQkJOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0luc3BlY3Rv
clByaXZhdGUuaCAqLywKIAkJCQk5OTk5NkE5RDI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVj
dG9yUHJpdmF0ZUZvclRlc3RpbmcuaCAqLywKQEAgLTg2NjksNiArODY5Niw4IEBACiAJCQkJMUM4
RTI4MzMxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmNwcCAqLywKIAkJCQkx
QzhFMjgzMjEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCAqLywKIAkJCQkx
Qzc3QzE5NTEyODhBODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4g
Ki8sCisJCQkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmNwcCAqLywKKwkJCQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUg
LyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLywKIAkJCQlBNTVC
QTgyNzFCQTM4RTFFMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCAqLywKIAkJ
CQlBNTVCQTgyODFCQTM4RTFFMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmggKi8s
CiAJCQkJQTVFQzZBRDIyMTUxQkQ2OTAwNjc3RDE3IC8qIFdlYlBhZ2VEZWJ1Z2dhYmxlLmNwcCAq
LywKQEAgLTg3MzEsNiArODc2MCw5IEBACiAJCQkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8q
IFdlYkluc3BlY3RvclVJLmNwcCAqLywKIAkJCQkxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyog
V2ViSW5zcGVjdG9yVUkuaCAqLywKIAkJCQkxQzg5MUQ2NDE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8sCisJCQkJOTlCMTY3NjAyNTJCQkU2MTAwNzMxNDBF
IC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgKi8sCisJCQkJOTlCMTY3
NjEyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5o
ICovLAorCQkJCTk5QjE2NzYyMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJQTU0M0UzMEEyMTVDOEE4NDAwMjc5
Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwICovLAogCQkJCUE1NDNFMzA4MjE1QzhB
ODMwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmggKi8sCiAJCQkJQTU0M0UzMDky
MTVDOEE4MzAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmNwcCAq
LywKQEAgLTkzNTYsNiArOTM4OCw3IEBACiAJCQkJOTE5Nzk0MDkyM0RCQzRFMDAwMjU3ODkyIC8q
IEFQSUluc3BlY3RvckNsaWVudC5oICovLAogCQkJCTk5NEM2MDQ4MjUzRjgyMDIwMEJERjA2MCAv
KiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQk5OTRDNjA0NjI1M0NBQ0I4
MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTk5QkUzQjEy
MjU0MjJGNDEwMEM2NTUxQyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKIAkJCQkzMUIz
NjI5MDIxNDFFQUJDMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwICovLAog
CQkJCTMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5o
ICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlz
dG9yeUNsaWVudC5oICovLApAQCAtMTAzODYsNiArMTA0MTksOCBAQAogCQkJCTFDOEUyQTMyMTI3
Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oICovLAogCQkJCTFDQThCOTQz
MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCiAJCQkJMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVz
c2FnZXMuaCAqLywKKwkJCQk5OTc5NjU5QjI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk5OTc5NjU5
QTI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVz
c2FnZXMuaCAqLywKIAkJCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9y
VUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAv
KiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi8sCiAJCQkJNTFGMDYwREQxNjU0MzE3NTAwRjMy
ODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMDgwMSw2
ICsxMDgzNiw5IEBACiAJCQkJOTkxRjQ5MkYyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3Rv
ckRlYnVnZ2FibGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAw
MEIwNkEgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTE5Nzk0MEMyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc1NzI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTc5NjVBMzI1MzEyOEM3MDBC
MzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTlCMTY3NTgyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0FGREU0NzIxMzA4NDZBMDBCMUY3RTEgLyogX1dLSW5z
cGVjdG9ySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NzlDQTU4MjM3RjQ5RjEwMDM5
RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTk5NkE5
RjI1MDA0QkNDMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTE1MzcsNiArMTE1NzUsOSBAQAogCQkJCTFDOEUyODM0MTI3NUQ3Mzgw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBOEI5
NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTlCMTY3NjQyNTJCQkU2MjAwNzMxNDBFIC8qIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk3OTY1OUUy
NTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc1QjI1MkJCQUREMDA3MzE0MEUgLyogV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDQkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTVCQTgyQjFCQTM4RTYxMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9y
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREE5NDRBMDE4ODRFNEYwMDBFRDg2REIg
LyogV2ViSU9TRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTEzMzU1LDYgKzEzMzk2
LDcgQEAKIAkJCQlGRURCRENENjFFNjhEMjAwMDBBNTlGOEYgLyogV2ViSW5zcGVjdG9ySW50ZXJy
dXB0RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzhF
MkEzNTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0
b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OTc5NjU5RjI1
MzEwQTQ5MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4
MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRDkyQTc4QTIxMkI2QUIxMDBGNDkzRkQgLyogV2ViS2V5Ym9hcmRFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2QUQ5RjkgLyogV2ViS2l0Lm0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggNjc3MWM2ZjBkZTYzMWZjYzE0MmVm
NjA4NmZlMGFhYmU3NGM3ZjY1My4uZDEzOTBiZmQ2ZjZiZTIzMTU2NjdjMDRmZDZiZWMzZDZhYzE1
NTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0
aW5ncy5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2luY2x1ZGUgIldl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIgorI2VuZGlmCisKICNpZiAhUExBVEZP
Uk0oTUFDKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNlbmRpZgpAQCAtNTgsOCArNjIsMTQgQEAgUmVtb3Rl
V2ViSW5zcGVjdG9yVUk6OlJlbW90ZVdlYkluc3BlY3RvclVJKFdlYlBhZ2UmIHBhZ2UpCiAgICAg
V2ViSW5zcGVjdG9yVUk6OmVuYWJsZUZyb250ZW5kRmVhdHVyZXMoKTsKIH0KIAorUmVtb3RlV2Vi
SW5zcGVjdG9yVUk6On5SZW1vdGVXZWJJbnNwZWN0b3JVSSgpID0gZGVmYXVsdDsKKwogdm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JVSTo6aW5pdGlhbGl6ZShEZWJ1Z2dhYmxlSW5mb0RhdGEmJiBkZWJ1
Z2dhYmxlSW5mbywgY29uc3QgU3RyaW5nJiBiYWNrZW5kQ29tbWFuZHNVUkwpCiB7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG1h
a2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyPigqdGhpcyk7CisjZW5k
aWYKKwogICAgIG1fZGVidWdnYWJsZUluZm8gPSBXVEZNb3ZlKGRlYnVnZ2FibGVJbmZvKTsKICAg
ICBtX2JhY2tlbmRDb21tYW5kc1VSTCA9IGJhY2tlbmRDb21tYW5kc1VSTDsKIApAQCAtMTA5LDYg
KzExOSw4IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKCkKIAog
ICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5
bmMoInNldElzVmlzaWJsZSJfcywgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHRydWUpIH0pOwogCisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkZyb250ZW5kTG9hZGVkKCksIG1f
cGFnZS5pZGVudGlmaWVyKCkpOworCiAgICAgYnJpbmdUb0Zyb250KCk7CiB9CiAKQEAgLTE3NCw2
ICsxODYsMTAgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogewog
ICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQobnVsbHB0cik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lP
TlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbnVsbHB0cjsKKyNlbmRpZgorICAgIAog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpGcm9udGVuZERpZENsb3NlKCks
IG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCkBAIC0yNTgsNiArMjc0LDEyIEBAIHZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yVUk6OnNldERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKGJvb2wgYXZh
aWxhYmxlKQogfQogI2VuZGlmCiAKK1dlYkNvcmU6OlBhZ2UqIFJlbW90ZVdlYkluc3BlY3RvclVJ
Ojpmcm9udGVuZFBhZ2UoKQoreworICAgIHJldHVybiBtX3BhZ2UuY29yZVBhZ2UoKTsKK30KKwor
CiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKFdJTikK
IFN0cmluZyBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1Jl
bW90ZVdlYkluc3BlY3RvclVJLmgKaW5kZXggMDI1ZWM5MGExZDRhZjFjOWY1NTNkYmM0MmY3Yzkz
OWZkNDM5ODQ5My4uYjhkYTlhOWY4YTVhNzY2ZDEzNjEyMjZhZjBjNGU4NTYxNjU2YjNkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JVSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yVUkuaApAQCAtMzksMTEgKzM5LDE2IEBAIGNsYXNzIEZsb2F0UmVjdDsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcjsKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFJlbW90ZVdlYkluc3BlY3RvclVJIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yVUk+LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7
CitjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JVSSBmaW5hbAorICAgIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yVUk+CisgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVXZWJJbnNwZWN0b3JVST4gY3JlYXRlKFdlYlBhZ2Um
KTsKKyAgICB+UmVtb3RlV2ViSW5zcGVjdG9yVUkoKTsKIAogICAgIC8vIEltcGxlbWVudGVkIGlu
IGdlbmVyYXRlZCBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwpAQCAtOTcsNiArMTAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd0NlcnRpZmlj
YXRlKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyJiBmcm9udGVuZEFQSURpc3BhdGNoZXIo
KSBvdmVycmlkZSB7IHJldHVybiBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlcjsgfQorICAgIFdlYkNv
cmU6OlBhZ2UqIGZyb250ZW5kUGFnZSgpIGZpbmFsOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9U
RUxFTUVUUlkpCiAgICAgYm9vbCBzdXBwb3J0c0RpYWdub3N0aWNMb2dnaW5nKCkgb3ZlcnJpZGU7
CkBAIC0xMTcsNiArMTIzLDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZSYgbV9wYWdlOwogICAg
IFJlZjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI+IG1fZnJvbnRlbmRB
UElEaXNwYXRjaGVyOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q+
IG1fZnJvbnRlbmRIb3N0OworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyPiBtX2V4dGVu
c2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKKwogICAgIERlYnVnZ2FibGVJbmZvRGF0YSBtX2RlYnVn
Z2FibGVJbmZvOwogICAgIFN0cmluZyBtX2JhY2tlbmRDb21tYW5kc1VSTDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcApp
bmRleCA4MjgwOWFkYjZkZWU2YTU1YmI5NTI2NzgzNTEzOGFjMjM2Nzk1ZTVkLi5jMmQ4ODM2YWMy
MjAwOTFhNWNlZjVjNjdjMjY3ZWUyODBkMjdhNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcApAQCAtMzYsMTAgKzM2
LDE1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxl
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KIAorI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC02NSw2ICs3MCw4IEBAIFdlYkluc3BlY3RvclVJOjpXZWJJ
bnNwZWN0b3JVSShXZWJQYWdlJiBwYWdlKQogICAgIFdlYkluc3BlY3RvclVJOjplbmFibGVGcm9u
dGVuZEZlYXR1cmVzKCk7CiB9CiAKK1dlYkluc3BlY3RvclVJOjp+V2ViSW5zcGVjdG9yVUkoKSA9
IGRlZmF1bHQ7CisKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgY29uc3QgRGVidWdn
YWJsZUluZm9EYXRhJiBkZWJ1Z2dhYmxlSW5mbywgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGlu
c3BlY3Rpb25MZXZlbCkKIHsKICAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gaW5zcGVj
dGVkUGFnZUlkZW50aWZpZXI7CkBAIC03Miw4ICs3OSwxMSBAQCB2b2lkIFdlYkluc3BlY3RvclVJ
Ojplc3RhYmxpc2hDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaW5zcGVjdGVkUGFn
ZUlkZQogICAgIG1fdW5kZXJUZXN0ID0gdW5kZXJUZXN0OwogICAgIG1faW5zcGVjdGlvbkxldmVs
ID0gaW5zcGVjdGlvbkxldmVsOwogCi0gICAgbV9mcm9udGVuZEFQSURpc3BhdGNoZXItPnJlc2V0
KCk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29u
dHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyPigq
dGhpcyk7CisjZW5kaWYKIAorICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5yZXNldCgpOwog
ICAgIG1fZnJvbnRlbmRDb250cm9sbGVyID0gJm1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCk7CiAgICAgbV9mcm9udGVuZENvbnRyb2xsZXItPnNldEluc3BlY3RvckZyb250
ZW5kQ2xpZW50KHRoaXMpOwogCkBAIC0xNjUsNiArMTc1LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUk6OmNsb3NlV2luZG93KCkKIAogICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSB7IH07
CiAgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKKyAgICAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbnVsbHB0cjsKKyNlbmRpZgog
fQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpyZW9wZW4oKQpAQCAtNDEyLDYgKzQyNiwxMiBAQCBT
dHJpbmcgV2ViSW5zcGVjdG9yVUk6OnRhcmdldFByb2R1Y3RWZXJzaW9uKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9kZWJ1Z2dhYmxlSW5mby50YXJnZXRQcm9kdWN0VmVyc2lvbjsKIH0KIAorV2ViQ29y
ZTo6UGFnZSogV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kUGFnZSgpCit7CisgICAgcmV0dXJuIG1f
cGFnZS5jb3JlUGFnZSgpOworfQorCisKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0o
R1RLKSAmJiAhUExBVEZPUk0oV0lOKQogYm9vbCBXZWJJbnNwZWN0b3JVSTo6Y2FuU2F2ZSgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJLmgKaW5kZXggYTZlZTcxMzM5MzllZjJhMDRiNmI4NjJiMjhlODIxN2ZlMjBkYjFlZS4uMjRj
MWFiNDY5ZTgwZDViMzc3YjA2MDlmNzA1ZmRlNmZlMGU5ZDIwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaApAQCAtMzEsMTAg
KzMxLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JEZWJ1Z2dhYmxlVHlwZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEluc3BlY3RvckNvbnRyb2xsZXI7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZEhvc3Q7CiBjbGFz
cyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBGbG9hdFJlY3Q7CiB9CkBAIC00MiwxMCArNDIsMTcg
QEAgY2xhc3MgRmxvYXRSZWN0OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyOworI2VuZGlmCiAKLWNsYXNzIFdlYkluc3BlY3RvclVJIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViSW5zcGVjdG9yVUk+LCBwcml2YXRlIElQQzo6Q29ubmVjdGlvbjo6
Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgeworY2xhc3Mg
V2ViSW5zcGVjdG9yVUkgZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkluc3BlY3Rv
clVJPgorICAgICwgcHJpdmF0ZSBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAorICAgICwgcHVibGlj
IFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFdlYkluc3BlY3RvclVJPiBjcmVhdGUoV2ViUGFnZSYpOworICAgIHZpcnR1YWwgfldlYklu
c3BlY3RvclVJKCk7CiAKICAgICBzdGF0aWMgdm9pZCBlbmFibGVGcm9udGVuZEZlYXR1cmVzKCk7
CiAKQEAgLTE0Myw3ICsxNTAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9C
YWNrZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgZmluYWwgeyByZXR1
cm4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7IH0KLQorICAgIFdlYkNvcmU6OlBhZ2UqIGZyb250
ZW5kUGFnZSgpIGZpbmFsOworICAgICAgICAKICAgICB2b2lkIHBhZ2VQYXVzZWQoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBhZ2VVbnBhdXNlZCgpIG92ZXJyaWRlOwogCkBAIC0xNjAsNiArMTY4LDEw
IEBAIHByaXZhdGU6CiAgICAgLy8gY29yZVBhZ2UoKSwgc2luY2Ugd2UgbWF5IG5lZWQgaXQgYWZ0
ZXIgdGhlIGZyb250ZW5kJ3MgcGFnZSBoYXMgc3RhcnRlZCBkZXN0cnVjdGlvbi4KICAgICBXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBtX2Zyb250ZW5kQ29udHJvbGxlciB7IG51bGxwdHIg
fTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyPiBtX2V4dGVuc2lvbkNvbnRyb2xs
ZXI7CisjZW5kaWYKKwogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcjsKICAgICBib29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKICAgICBEZWJ1Z2dh
YmxlSW5mb0RhdGEgbV9kZWJ1Z2dhYmxlSW5mbzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTIyMzcyZDc5N2YxMjVlZGJiYmYxMmE4
MWUyNzU3YmEzMjBlMDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0w
LDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIgorCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUkuaCIKKyNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzUmVwbGllcy5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50JiBpbnNw
ZWN0b3JGcm9udGVuZCkKKyAgICA6IG1fZnJvbnRlbmRDbGllbnQobWFrZVdlYWtQdHIoaW5zcGVj
dG9yRnJvbnRlbmQpKQoreworICAgIFBhZ2UqIHBhZ2UgPSBpbnNwZWN0b3JGcm9udGVuZC5mcm9u
dGVuZFBhZ2UoKTsKKyAgICBBU1NFUlQocGFnZSk7CisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2Uo
KnBhZ2UpLmlkZW50aWZpZXIoKSwgKnRoaXMpOworfQorCitXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcigqdGhpcyk7Cit9
CisKK09wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tUmVzdWx0KEpT
Qzo6SlNWYWx1ZSByZXN1bHQpCit7CisgICAgQVNTRVJUKG1fZnJvbnRlbmRDbGllbnQpOworICAg
IGF1dG8gZ2xvYmFsT2JqZWN0ID0gbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRj
aGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAg
ICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkOwor
CisgICAgLy8gSWYgdGhlIGV2YWx1YXRpb24gcmVzdWx0IGlzIGEgc3RyaW5nLCB0aGUgZnJvbnRl
bmQgcmV0dXJuZWQgYW4gZXJyb3Igc3RyaW5nLgorICAgIC8vIEFueXRoaW5nIGVsc2UgKGZhbHN5
IHZhbHVlcywgb2JqZWN0cywgYXJyYXlzLCBET00sIGV0Yy4pIGlzIGludGVycHJldGVkIGFzIHN1
Y2Nlc3MuCisgICAgaWYgKHJlc3VsdC5pc1N0cmluZygpKSB7CisgICAgICAgIGF1dG8gcmVzdWx0
U3RyaW5nID0gcmVzdWx0LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIGlmIChy
ZXN1bHRTdHJpbmcgPT0gIkNvbnRleHREZXN0cm95ZWQiX3MpCisgICAgICAgICAgICByZXR1cm4g
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CisgICAgICAgIGlmIChy
ZXN1bHRTdHJpbmcgPT0gIkludGVybmFsRXJyb3IiX3MpCisgICAgICAgICAgICByZXR1cm4gSW5z
cGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CisgICAgICAgIGlmIChyZXN1bHRT
dHJpbmcgPT0gIkludmFsaWRSZXF1ZXN0Il9zKQorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdDsKKyAgICAgICAgaWYgKHJlc3VsdFN0cmlu
ZyA9PSAiUmVnaXN0cmF0aW9uRmFpbGVkIl9zKQorICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQ7CisKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50
ZXJuYWxFcnJvcjsKKyAgICB9CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCisvLyBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3NhZ2VzLgorCit2b2lkIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9mcm9udGVuZENsaWVudCkgeworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZl
Y3RvcjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeworICAgICAgICBKU09OOjpWYWx1ZTo6
Y3JlYXRlKGV4dGVuc2lvbklEKSwKKyAgICAgICAgSlNPTjo6VmFsdWU6OmNyZWF0ZShkaXNwbGF5
TmFtZSksCisgICAgfTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNo
ZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInJlZ2lzdGVyRXh0ZW5zaW9uIl9z
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9u
dGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0
RGVzdHJveWVkKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUluc3BlY3RvckV4dGVuc2lvbkVy
cm9yRnJvbVJlc3VsdChyZXN1bHQudmFsdWUoKSkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1ha2VVbmV4cGVjdGVkKHBhcnNlZEVycm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwor
ICAgIH0pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6dW5y
ZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9y
OjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9y
PFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5z
aW9uSUQpIH07CisgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCku
ZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ1bnJlZ2lzdGVyRXh0ZW5zaW9uIl9zLCBX
VEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJbnNwZWN0b3JGcm9udGVu
ZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVz
dHJveWVkKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
YXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9y
RnJvbVJlc3VsdChyZXN1bHQudmFsdWUoKSkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKHBhcnNlZEVycm9yLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAg
IH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY1YjQwYWIzOTNhMDUxZmIyNTIwNTA3ZTM1YmJkY2RlYWUxNTg1NmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
KworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JFeHRlbnNpb25U
eXBlcy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgSlNW
YWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJbnNwZWN0b3JVSTsK
KworY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyCisgICAgOiBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlcihXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCYpOworICAgIH5XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoKTsKKworICAgIC8vIEltcGxlbWVudGVkIGluIGdl
bmVyYXRlZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBvdmVycmlkZTsKKworICAgIC8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlciBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYpOwor
ICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yPik+JiYpOworCitwcml2YXRlOgorICAgIE9wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbVJlc3VsdChKU0M6OkpTVmFsdWUg
cmVzdWx0KTsKKworICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+
IG1fZnJvbnRlbmRDbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmM3OGVk
NzVjY2MzYTk3NmVmZTc2MGNjYmY4ZDhjNjEwNDU0NjVjNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykK
KworbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIE5vdFJlZkNv
dW50ZWQgeworICAgIFJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRlbnNpb25JRCwgU3RyaW5n
IGRpc3BsYXlOYW1lKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4gcmVzdWx0KSBBc3luYworICAgIFVucmVnaXN0ZXJFeHRlbnNpb24oU3RyaW5nIGV4
dGVuc2lvbklEKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25F
cnJvcj4gcmVzdWx0KSBBc3luYworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNw
cAppbmRleCBkNGY0ZDRmNjk0MDAwMjZiOTlmN2JjNTQyMWZjNGM5Y2M0ZTYxOGFkLi5lYTE2YjJl
ZDc2NjViMzJiZDM5Y2FjNDYzMmI0YjlhNTFhNzVkNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU3BlZWNoUmVjb2duaXRpb25Db25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIldlYlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbi5oIgogCiAjaW5jbHVkZSAiU3BlZWNo
UmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TcGVlY2hS
ZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnQuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5ODhjMDhjZjYyNzRjYjVjZTIxOTZhZGQwMmY2ZTI2
NmI5MzBkMjE2Li4zN2U3YTRiNTJhYzZlM2Y4ZDVlYTFlNTE1NDM2NzI1OGIzMGNlYzgxIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMjAtMTEtMDMgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgW0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9XS0luc3BlY3RvckV4dGVuc2lv
biBhbmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTk2ODc4Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQWRkIEFQSSB0
ZXN0cyB0byBleGVyY2lzZSBuZXcgbWV0aG9kcyBvZiB0aGUgX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
SG9zdCBwcm90b2NvbC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcgdGVzdCBmaWxlLgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tOiBB
ZGRlZC4KKyAgICAgICAgKHJlc2V0R2xvYmFsU3RhdGUpOgorICAgICAgICAoLVtVSURlbGVnYXRl
Rm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbkhvc3QgX3dlYlZpZXc6ZGlkQXR0YWNoTG9jYWxJ
bnNwZWN0b3I6XSk6CisgICAgICAgIChURVNUKToKKwogMjAyMC0xMS0wMyAgU2lodWkgTGl1ICA8
c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBTZXQgdXAgYmFzaWMgaW5mcmFzdHJ1Y3R1
cmUgZm9yIFNwZWVjaFJlY29nbml0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDViNTA4
OTM2NzQzY2QxMDAyNTNiMDVhNDEzYjFkNmFhNTk3YjcyMjguLjZkYzkwYWUwMDFhMzFjZTU3MjVl
Y2M4NGIzZGQ2Y2U0OTY4NWM0YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzUsNiAr
ODM1LDcgQEAKIAkJOTk4NEZBQ0MxQ0ZGQUY2MDAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5ODRG
QUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi87IH07CiAJCTk5
ODRGQUNFMUNGRkIwOTAwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk4NEZBQ0QxQ0ZGQjAz
ODAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLzsgfTsKIAkJOTk5OTEwOEIxRjM5M0M5
NjAwOEFENDU1IC8qIENvcHlpbmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5OTk5MTA4QTFGMzkzQzhCMDA4QUQ0NTUgLyogQ29weWluZy5tbSAqLzsg
fTsKKwkJOTk5QjdFRTMyNTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9z
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5OUI3
RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0gKi87IH07
CiAJCTk5QjRGOUM2MjRFREVEOTcwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlCNEY5QzUyNEVE
RUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi87IH07CiAJCTlCMDJFMEQ2
MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwMkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8q
IFRleHRNYW5pcHVsYXRpb24ubW0gKi87IH07CiAJCTlCMDc4NkE1MUM1ODg1QzMwMEQxNTlFMyAv
KiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDc4NkE0MUM1ODg1QzMw
MEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNw
cCAqLzsgfTsKQEAgLTI0NDYsNiArMjQ0Nyw3IEBACiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4
QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRpdGFibGUtYm9keS5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8qIENvcHlpbmcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3B5aW5nLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTlCN0VFMjI1NTFDNjNCMDBGNDUwQTQgLyog
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OUI0RjlDNTI0RURFRDk2MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVj
dG9yRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDJFMEQ1MjM1
RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVGV4dE1hbmlwdWxhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIw
Nzg2QTIxQzU4ODMwRjAwRDE1OUUzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3Rz
T3Blbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1
bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzQwOSw2ICszNDExLDcgQEAKIAkJCQkzNzBDRTIyOTFGNTczNDM0MDBFNzQxMEIgLyog
V0tDb250ZW50Vmlld1RhcmdldEZvckFjdGlvbi5tbSAqLywKIAkJCQk1MUQxMjQ5NzFFNzYzQUY4
MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8sCiAJCQkJOTlCNEY5QzUyNEVERUQ5
NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi8sCisJCQkJOTk5QjdFRTIyNTUx
QzYzQjAwRjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSAqLywKIAkJCQlBNUE3
MjlGMDFGNjIyQTlBMDBERTVBMjggLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8sCiAJCQkJ
REY0QjI3MzgyMUE0NzcyNzAwOUJEMUNBIC8qIFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5
Q3Jhc2gubW0gKi8sCiAJCQkJMzc1RTBFMTUxRDY2Njc0NDAwRUZFQzJDIC8qIFdLTlNOdW1iZXIu
bW0gKi8sCkBAIC01NTQyLDYgKzU1NDUsNyBAQAogCQkJCTUxRDEyNDk4MUU3NjNCMDIwMDJCMjgy
MCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjFEMUE0
MTFBRTYwMDQ0N0M0QyAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk5QjRGOUM2MjRFREVEOTcwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRl
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTk5QjdFRTMyNTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5z
cGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE1QTcyOUYxMUY2MjJB
QTcwMERFNUEyOCAvKiBXS05hdmlnYXRpb25SZXNwb25zZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CURGNEIyNzM5MjFBNDc3MjgwMDlCRDFDQSAvKiBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFy
eUNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc1RTBFMTcxRDY2Njc0NDAwRUZFQzJDIC8q
IFdLTlNOdW1iZXIubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkhv
c3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWVkYWNkNzljZGFkNzc4ZjkzNGEwOWNkODk0NTA0ZGVkYWRjYTY2
OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlV0
aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3Bl
Y3Rvci5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmg+
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCisKK3N0YXRpYyBib29sIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFs
c2U7CitzdGF0aWMgYm9vbCBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKworc3Rh
dGljIHZvaWQgcmVzZXRHbG9iYWxTdGF0ZSgpCit7CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0
b3JDYWxsZWQgPSBmYWxzZTsKKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsK
K30KKworQGludGVyZmFjZSBVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbkhv
c3QgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gVUlE
ZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb25Ib3N0CisKKy0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KF9XS0luc3Bl
Y3RvciAqKWluc3BlY3RvcgoreworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9pbnNwZWN0b3IsIGlu
c3BlY3Rvcik7CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSB0cnVlOworfQor
CitAZW5kCisKK1RFU1QoV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LCBSZWdpc3RlckV4dGVuc2lv
bikKK3sKKyAgICByZXNldEdsb2JhbFN0YXRlKCk7CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICB3ZWJW
aWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2Vi
Vmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5T
KFtVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbmV3XSk7CisKKyAg
ICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOkAiPGhlYWQ+PHRpdGxlPlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8
L3RpdGxlPjwvaGVhZD48Ym9keT48cD5GaWxsZXIgY29udGVudDwvcD48L2JvZHk+IiBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKworICAgIFtb
d2ViVmlldyBfaW5zcGVjdG9yXSBzaG93XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkKTsKKworICAgIGF1dG8gZmlyc3RJRCA9IFtO
U1VVSUQgVVVJRF0uVVVJRFN0cmluZzsKKyAgICBhdXRvIHNlY29uZElEID0gW05TVVVJRCBVVUlE
XS5VVUlEU3RyaW5nOworCisgICAgLy8gTm9ybWFsIHJlZ2lzdHJhdGlvbi4KKyAgICBwZW5kaW5n
Q2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVn
aXN0ZXJFeHRlbnNpb25XaXRoSUQ6Zmlyc3RJRCBkaXNwbGF5TmFtZTpAIkZpcnN0RXh0ZW5zaW9u
IiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKKyAgICAgICAgRVhQRUNUX05V
TEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0ZW5zaW9uKTsKKworICAgICAg
ICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKworICAgIC8vIERv
dWJsZSByZWdpc3RyYXRpb24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7
CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmZpcnN0
SUQgZGlzcGxheU5hbWU6QCJGaXJzdEV4dGVuc2lvbiIgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vy
cm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUg
ZXh0ZW5zaW9uKSB7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgICAgIEVY
UEVDVF9OVUxMKGV4dGVuc2lvbik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtlcnJvci5sb2NhbGl6
ZWRGYWlsdXJlUmVhc29uIGNvbnRhaW5zU3RyaW5nOkAiUmVnaXN0cmF0aW9uRmFpbGVkIl0pOwor
CisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisg
ICAgLy8gVHdvIHJlZ2lzdHJhdGlvbnMuCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0g
ZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElE
OnNlY29uZElEIGRpc3BsYXlOYW1lOkAiU2Vjb25kRXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9O
dWxsYWJsZSBleHRlbnNpb24pIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAg
ICBFWFBFQ1RfTk9UX05VTEwoZXh0ZW5zaW9uKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tX
YXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
cGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKK30KKworVEVTVChXS0luc3BlY3RvckV4dGVuc2lv
bkhvc3QsIFVucmVnaXN0ZXJFeHRlbnNpb24pCit7CisgICAgcmVzZXRHbG9iYWxTdGF0ZSgpOwor
CisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gbmV3XSk7CisgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5j
ZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
YXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JF
eHRlbnNpb25Ib3N0IG5ld10pOworCisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVn
YXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxoZWFkPjx0aXRsZT5U
ZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90aXRsZT48L2hlYWQ+PGJvZHk+PHA+RmlsbGVyIGNv
bnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9l
eGFtcGxlLmNvbS8iXV07CisKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd107CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7
CisKKyAgICBhdXRvIGZpcnN0SUQgPSBbTlNVVUlEIFVVSURdLlVVSURTdHJpbmc7CisgICAgX19i
bG9jayBSZXRhaW5QdHI8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uPiBmb3VuZEV4dGVuc2lvbjsKKwor
ICAgIC8vIFVucmVnaXN0ZXIgYSBrbm93biBleHRlbnNpb24uCisgICAgcGVuZGluZ0NhbGxiYWNr
V2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0
ZW5zaW9uV2l0aElEOmZpcnN0SUQgZGlzcGxheU5hbWU6QCJGaXJzdEV4dGVuc2lvbiIgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRl
bnNpb24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9y
KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7CisgICAgICAgIGZvdW5kRXh0
ZW5zaW9uID0gZXh0ZW5zaW9uOworCisgICAgICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSB1bnJl
Z2lzdGVyRXh0ZW5zaW9uOmZvdW5kRXh0ZW5zaW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICAgICAgRVhQRUNUX05VTEwoZXJy
b3IpOworCisgICAgICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAg
ICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdD
YWxsYmFja1dhc0NhbGxlZCk7CisgICAgRVhQRUNUX05PVF9OVUxMKGZvdW5kRXh0ZW5zaW9uLmdl
dCgpKTsKKworICAgIC8vIFJlLXJlZ2lzdGVyIGFuIGV4dGVuc2lvbi4KKyAgICBwZW5kaW5nQ2Fs
bGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0
ZXJFeHRlbnNpb25XaXRoSUQ6Zmlyc3RJRCBkaXNwbGF5TmFtZTpAIkZpcnN0RXh0ZW5zaW9uIiBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IsIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0ZW5zaW9uKTsKKyAgICAgICAgZm91
bmRFeHRlbnNpb24gPSBleHRlbnNpb247CisKKyAgICAgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3Jd
IHVucmVnaXN0ZXJFeHRlbnNpb246Zm91bmRFeHRlbnNpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisKKyAgICAgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7
CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVu
ZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoZm91bmRFeHRlbnNp
b24uZ2V0KCkpOworCisgICAgLy8gVW5yZWdpc3RlciBhbiBleHRlbnNpb24gdHdpY2UuCisgICAg
cGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0
b3JdIHVucmVnaXN0ZXJFeHRlbnNpb246Zm91bmRFeHRlbnNpb24uZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OT1Rf
TlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtlcnJvci5sb2NhbGl6ZWRGYWlsdXJl
UmVhc29uIGNvbnRhaW5zU3RyaW5nOkAiSW52YWxpZFJlcXVlc3QiXSk7CisKKyAgICAgICAgcGVu
ZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413353</attachid>
            <date>2020-11-05 14:36:39 -0800</date>
            <delta_ts>2020-11-11 12:09:39 -0800</delta_ts>
            <desc>Patch v2.4</desc>
            <filename>bug-217783-20201105143637.patch</filename>
            <type>text/plain</type>
            <size>118883</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDgzM2ZjNTA1MGY3NjYy
MzZiNTkyNjljOTk2M2Q4Nzk2ZWU4MzY3MS4uNzZiMjA4ODRjMmQ0ZjFmNzNkYThkZjdmMWE3MDlm
YzBkMWNiMzJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTExLTAzICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4
dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGV2aW4gUm91c3NvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aDoKKyAgICAgICAgSW4gb3JkZXIgZm9yIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ciB0byB3b3JrIHdpdGggcmVtb3RlIGFuZCBsb2NhbAorICAgICAgICBpbnNwZWN0b3JzLCBpdCBz
dG9yZXMgYSB3ZWFrIHBvaW50ZXIgdGhlIGluc3BlY3RvcidzIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LgorICAgICAgICBFeHBvc2UgdGhlIGZyb250ZW5kJ3MgcGFnZSBzbyB0aGF0IHRoZSBmcm9u
dGVuZCBBUEkgZGlzcGF0Y2hlciBjYW4gZGlzcGF0Y2ggdG8gaXQuCisKIDIwMjAtMTEtMDUgIEFk
cmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XSBBZGQgbWlzc2luZyBjb25zdF9jYXN0IGluIGdka19ldmVudF9nZXRfc291cmNlX2RldmljZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAxYzY0NjFhMTdkZDY0MmMyNjg3MmJkMmFlNDg3
ZDNjNzk1OWRlZGE3Li5hZDEyZmUxOTI0ZWE3YzExMzVmM2RhZDkwNmQzMWE2NjlmMzNlM2MwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMC0xMC0yMiAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEluc3BlY3RvciBF
eHRlbnNpb25zOiBBZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFuZCByZWxhdGVkIHBsdW1iaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3ODMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5OTY4Nzg3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IERldmluIFJvdXNzby4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOiBBZGQg
bmV3IGZpbGVzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250
cm9sbGVyQmFzZS5qczoKKyAgICAgICAgKFdJLkFwcENvbnRyb2xsZXJCYXNlKToKKyAgICAgICAg
KFdJLkFwcENvbnRyb2xsZXJCYXNlLnByb3RvdHlwZS5nZXQgZXh0ZW5zaW9uQ29udHJvbGxlcik6
CisgICAgICAgIEhhbmcgdGhlIGV4dGVuc2lvbiBjb250cm9sbGVyIG9mZiBvZiB0aGUgZ2xvYmFs
IHNpbmdsZXRvbiwgYXMgdGhlcmUgY2FuIG9ubHkgYmUgb25lLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzOgor
ICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckV4dGVu
c2lvbik6CisgICAgICAgIChXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLnByb3Rv
dHlwZS51bnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIEZvciBub3csIGp1c3Qg
a2VlcCB0aGUgVVVJRHMgaW4gYSBtYXAgYW5kIGxvZyB0aGUgcmVzdWx0LgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzOgorICAgICAgICAo
V0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVu
c2lvbi5wcm90b3R5cGUuZ2V0IGV4dGVuc2lvbklEKToKKyAgICAgICAgKFdJLldlYkluc3BlY3Rv
ckV4dGVuc2lvbi5wcm90b3R5cGUuZ2V0IGRpc3BsYXlOYW1lKToKKyAgICAgICAgQWRkZWQuIFRo
aXMgaXMgYSBkYXRhIG9iamVjdCBmb3Igbm93LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Q
cm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQSS5qczoKKyAgICAgICAgKEluc3BlY3RvckZyb250
ZW5kQVBJLmxvYWRDb21wbGV0ZWQpOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkucmVn
aXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkudW5yZWdpc3Rl
ckV4dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3J3YXJkIGludm9jYXRpb25zIHRvIHRoZSBl
eHRlbnNpb24gY29udHJvbGxlci4KKwogMjAyMC0xMS0wNSAgUGF0cmljayBBbmdsZSAgPHBhbmds
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTig/KTogU291
cmNlczogb3ZlcnJpZGUgYmFubmVyIGlzIHNxdWlzaGVkIGZvciBsYXJnZSBpbWFnZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMWUzMTE0MTZmMmMyOTVlZGNiNTA4ZWU0YTM0NzYwN2U4YmZiZDk2NS4uMzQyOThlN2M3
NjFiZGVmY2Y5NGEwNjM5Y2M4MjU1MWE5ZDRlODdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzIg
QEAKKzIwMjAtMTAtMjIgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
W0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9XS0luc3BlY3RvckV4dGVuc2lvbiBh
bmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTk2ODc4Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uIGlzIG5ldyBTUEkgdGhhdCByZXByZXNlbnRzIGEgV2ViIEV4dGVuc2lvbiB0aGF0
IHVzZXMgdGhlICdkZXZ0b29scycKKyAgICAgICAgQVBJIHRvIGludGVyYWN0IHdpdGggV2ViIElu
c3BlY3Rvci4gQW4gZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQgd2l0aCBpdHMgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSG9zdC4KKyAgICAgICAgQSBXZWJLaXQgY2xpZW50IHRoYXQgc3VwcG9ydHMgV2Vi
IEV4dGVuc2lvbnMgY2FuIHVzZSB0aGlzIGNsYXNzIHRvIGltcGxlbWVudCAnZGV2dG9vbHMnIGV4
dGVuc2lvbiBBUElzLgorCisgICAgICAgIEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IG1l
dGhvZHMgdG8gcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgYW4gZXh0ZW5zaW9uLgorICAgICAgICBB
ZGQgcGx1bWJpbmcgc28gdGhhdCB0aGUgZXh0ZW5zaW9uIGluIHJlZ2lzdGVyZWQgaW4gdGhlIGZy
b250ZW5kIHdpdGggV0kuSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci4KKworICAgICAgICBM
YXRlciBwYXRjaGVzIHdpbGwgZmxlc2ggb3V0IHRoZSBuZWVkZWQgZnVuY3Rpb25hbGl0eSB0byBp
bXBsZW1lbnQgcmVzdCBvZiB0aGUgJ2RldnRvb2xzJyBBUEkuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OiBJZiBhIG1lc3NhZ2UgaW5jbHVk
ZXMgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIHRoZW4gZ2VuZXJhdGUgYW4gaW5j
bHVkZSBmb3IgSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCB3aGVyZSBpdCBpcyBkZWNsYXJlZC4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICBOZXcgQVBJIG9iamVjdCB0eXBlLgorCisgICAgICAgICogU2hhcmVkL0luc3BlY3RvckV4
dGVuc2lvblR5cGVzLmg6IEFkZGVkIGVycm9yIGNvZGUgZW51bSBhbmQgdXNlZnVsIHR5cGUgYWxp
YXNlcy4KKyAgICAgICAgKiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKToKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNw
ZWN0b3JFeHRlbnNpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lv
bjo6SW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9u
Ojp+SW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIFRoaXMgaXMgYSBwbGFjZWhv
bGRlciBvYmplY3QgdGhhdCdzIHVzZWQgZm9yIHRoZSB3cmFwcGVyIHN5c3RlbSwKKyAgICAgICAg
c2luY2Ugd2UgZG9uJ3QgaGF2ZSBzaW5nbGUgQysrIG9iamVjdHMgZm9yIGVhY2ggZXh0ZW5zaW9u
IHRvIGJhY2sgdGhlIEFQSSBvYmplY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3Rvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6
ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3Rv
ciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBJbXBs
ZW1lbnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8g
dGhlIEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVu
c2lvbiBpbml0V2l0aElkZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVu
c2lvbiBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBfYXBpT2Jq
ZWN0XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBleHRlbnNpb25JRF0pOgor
ICAgICAgICBBZGRlZC4gVGhpcyBpcyBhIGRhdGEgb2JqZWN0IHRoYXQncyBhbHNvIHVzZWQgYXMg
YSB0b2tlbiB0byB1bnJlZ2lzdGVyIHRoZSBleHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaDogQWRkIG5ldyBTUEkuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5h
bC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdl
Ykluc3BlY3RvclZpZXdDb250cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlO
YW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICBJbXBsZW1lbnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9k
cy4gU2VuZCBJUEMgdG8gdGhlIEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOiBB
ZGQgRnJvbnRlbmRMb2FkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpleHRlbnNpb25Db250cm9sbGVyIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICBTZXQgdXAgdGhlIGV4dGVuc2lvbiBjb250cm9sbGVyIG9iamVjdCBhZnRl
ciB0aGUgZnJvbnRlbmQgaGFzIGJlZW4gY3JlYXRlZC4KKyAgICAgICAgSG9vayB1cCB0aGUgRnJv
bnRlbmRMb2FkZWQgZXZlbnQgc2VudCBmcm9tIEluc3BlY3RvciB3ZWIgcHJvY2VzcyBzbyB0aGF0
IHRoZQorICAgICAgICBleHRlbnNpb24gY29udHJvbGxlciBjYW4gYmUgbm90aWZpZWQgb2Ygd2hl
biBpdCdzIHNhZmUgdG8gbWVzc2FnZSB0aGUgZnJvbnRlbmQuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIFNldCB1
cCB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xsZXIgb2JqZWN0IGFmdGVyIHRoZSBmcm9udGVuZCBoYXMg
YmVlbiBjcmVhdGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZXh0ZW5zaW9u
Q29udHJvbGxlciBjb25zdCk6IEFkZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6On5X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp3aGVuRnJvbnRlbmRIYXNM
b2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
dW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3J3YXJkIEFQSSByZXF1ZXN0
cyB0byB0aGUgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzIHRvIGJlIGV2YWx1YXRlZCBpbiB0
aGUgZnJvbnRlbmQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmRpc3BhdGNoQ29tbWFuZCk6Cisg
ICAgICAgIEFkZCBhIG1vcmUgZ2VuZXJpYyB3YXkgdG8gZW5jb2RlIHZhbHVlcyB0byBiZSBwYXNz
ZWQgYXMgYXJndW1lbnRzIHRvIEluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OmZyb250ZW5kUGFnZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSTo6ZnJvbnRlbmRBUElEaXNwYXRjaGVyKTogQWRkZWQuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVn
aXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3JGcm9tUmVzdWx0KToKKyAgICAgICAgSGFuZGxlIGluY29taW5nIG1lc3NhZ2VzIGJ5IGZvcndh
cmRpbmcgdGhlIGFzc29jaWF0ZWQgY29tbWFuZCB0byBXSS5XZWJFeHRlbnNpb25Db250cm9sbGVy
CisgICAgICAgIHZpYSBJbnNwZWN0b3JGcm9udGVuZEFQSSBldmFsdWF0aW9ucy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICBGYWxsb3V0
IGZyb20gdW5pZmllZCBidWlsZCBjaHVua2luZyBzaGlmdHMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tOgorICAgICAg
ICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDo6Z2V0RXhpc3RpbmdDcmVkZW50
aWFscyk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6CisgICAgICAgIEZhbGxvdXQgZnJvbSB1
bmlmaWVkIGJ1aWxkIGNodW5raW5nIHNoaWZ0cywgYnV0IG1vcmUuCisKIDIwMjAtMTEtMDUgIFBl
ciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gVXBk
YXRlIG1lc3NhZ2UgZmlsdGVycyBpbiB0aGUgV2ViQ29udGVudCBzYW5kYm94CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IDBh
NzlkODZiM2M0Njk3NzgxNGE2OGY0ZWFhZWRiOGE4ZWU5ZmZiYTMuLmU4ZDEzYTIxMWUwNjI2ZTA3
NzQyNjQwOWFkZGFlMDU3YzU4YTFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCkBAIC0zNiwxNCArMzYsMTYgQEAKICNpbmNs
dWRlICJJbnNwZWN0b3JEZWJ1Z2dhYmxlVHlwZS5oIgogI2luY2x1ZGUgIlVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyOworY2xhc3MgUGFnZTsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQgeworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ+IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERv
Y2tTaWRlIHsKICAgICAgICAgVW5kb2NrZWQgPSAwLApAQCAtMTExLDYgKzExMyw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2Vu
ZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXImIGZyb250ZW5kQVBJRGlzcGF0Y2hlcigpID0gMDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBhZ2UqIGZyb250ZW5kUGFnZSgpID0gMDsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBpc1VuZGVyVGVzdCgpID0gMDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuaAppbmRleCAxMTgxYTIwOTZjMTc2MGRmMjI5MzI2MDEwNmM1ZDA5NWM0MWQzNDFhLi5h
ZDE4ZjYwODA1ZDFjZTE2ZTY5NDJlZjMyNzAyOTk0ODQ1OWFlNzk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgK
QEAgLTk1LDcgKzk1LDggQEAgcHVibGljOgogICAgIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNVUkwo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBTdHJpbmcoKTsgfTsKIAogICAgIEluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgZmluYWwgeyByZXR1cm4g
bV9mcm9udGVuZEFQSURpc3BhdGNoZXI7IH0KLQorICAgIFBhZ2UqIGZyb250ZW5kUGFnZSgpIGZp
bmFsIHsgcmV0dXJuIG1fZnJvbnRlbmRQYWdlOyB9CisgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBjYW5BdHRhY2hXaW5kb3coKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERvY2tp
bmdVbmF2YWlsYWJsZShib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFz
ZS5qcwppbmRleCA2MWQ0YzQ1OTQ0ZGI2Njk1NWQwMDA5NzNhM2U2ZGVhM2FlNjZlYTU2Li4wMDI1
Mzc0Yjc4ZDcwYzA3ZmZmZDhiYjNlNGFlMTJlMDM4OGViZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFz
ZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9BcHBDb250cm9sbGVyQmFzZS5qcwpAQCAtNDEsMTEgKzQxLDE0IEBAIFdJLkFwcENvbnRyb2xs
ZXJCYXNlID0gY2xhc3MgQXBwQ29udHJvbGxlckJhc2UKICAgICBjb25zdHJ1Y3RvcigpCiAgICAg
ewogICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlOworCisgICAgICAgIHRoaXMuX2V4
dGVuc2lvbkNvbnRyb2xsZXIgPSBuZXcgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
cjsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBkZWJ1Z2dhYmxlVHlwZSgpIHsg
dGhyb3cgV0kuTm90SW1wbGVtZW50ZWRFcnJvci5zdWJjbGFzc011c3RPdmVycmlkZSgpOyB9Cisg
ICAgZ2V0IGV4dGVuc2lvbkNvbnRyb2xsZXIoKSB7IHJldHVybiB0aGlzLl9leHRlbnNpb25Db250
cm9sbGVyOyB9CiAKICAgICAvLyBTaW5jZSB2YXJpb3VzIG1lbWJlcnMgb2YgdGhlIGFwcCBjb250
cm9sbGVyIGRlcGVuZCBvbiB0aGUgZ2xvYmFsIHNpbmdsZXRvbiB0byBleGlzdCwKICAgICAvLyBz
b21lIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgYXBwIGNvbnRyb2xs
ZXIgaGFzIGJlZW4gY29uc3RydWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9s
bGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
V2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmUzOTZjMzQy
NGY2MjQ3ZTAxYTBmYWY1MDljM2JiMjk3NzliMWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uQ29udHJvbGxlci5qcwpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lv
bkNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAg
eworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbklETWFwID0gbmV3
IE1hcDsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIHJlZ2lzdGVyRXh0ZW5zaW9uKGV4
dGVuc2lvbklELCBkaXNwbGF5TmFtZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9leHRlbnNp
b25JRE1hcC5oYXMoZXh0ZW5zaW9uSUQpKSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5h
bEVycm9yKCJVbmFibGUgdG8gcmVnaXN0ZXIgZXh0ZW5zaW9uLCBpdCdzIGFscmVhZHkgcmVnaXN0
ZXJlZDogIiwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLlJlZ2lzdHJhdGlvbkZhaWxlZDsKKyAg
ICAgICAgfQorCisgICAgICAgIGxldCBleHRlbnNpb24gPSBuZXcgV0kuV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CisgICAgICAgIHRoaXMuX2V4dGVuc2lv
bklETWFwLnNldChleHRlbnNpb25JRCwgZXh0ZW5zaW9uKTsKKworICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLkV2
ZW50LkV4dGVuc2lvbkFkZGVkLCB7ZXh0ZW5zaW9ufSk7CisgICAgfQorCisgICAgdW5yZWdpc3Rl
ckV4dGVuc2lvbihleHRlbnNpb25JRCkKKyAgICB7CisgICAgICAgIGxldCBleHRlbnNpb24gPSB0
aGlzLl9leHRlbnNpb25JRE1hcC50YWtlKGV4dGVuc2lvbklEKTsKKyAgICAgICAgaWYgKCFleHRl
bnNpb24pIHsKKyAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJsZSB0byB1
bnJlZ2lzdGVyIGV4dGVuc2lvbiB3aXRoIHVua25vd24gSUQ6ICIsIGV4dGVuc2lvbklEKTsKKyAg
ICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFs
aWRSZXF1ZXN0OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudC5FeHRlbnNpb25S
ZW1vdmVkLCB7ZXh0ZW5zaW9ufSk7CisgICAgfQorfTsKKworV0kuV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uQ29udHJvbGxlci5FdmVudCA9IHsKKyAgICBFeHRlbnNpb25BZGRlZDogImV4dGVuc2lvbi1h
ZGRlZCIsCisgICAgRXh0ZW5zaW9uUmVtb3ZlZDogImV4dGVuc2lvbi1yZW1vdmVkIiwKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggZmFl
M2NmODcyNmMwODc3NmVmMDMyYTVmYTQ5YmI1MjZkZWM0NTBiOC4uYjg2ZGY1ZmYwNTllZWJmODBl
MDMyNDlmOGYzMzhjNTk1YjNlZDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbApAQCAtNDg0LDYgKzQ4NCw3IEBACiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9UeXBlRGVzY3JpcHRpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvVHlwZVNldC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9VUkxC
cmVha3BvaW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dlYkluc3Bl
Y3RvckV4dGVuc2lvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XZWJT
b2NrZXRSZXNvdXJjZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFw
cGVkUHJvbWlzZS5qcyI+PC9zY3JpcHQ+CiAKQEAgLTg5OCw2ICs4OTksNyBAQAogICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJv
bGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1dvcmtlck1h
bmFnZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RpYWdu
b3N0aWNDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0
ZW5zaW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2ZDllZGEyMzJiODM0OGEyYjk0OTY5NWIzZTY1MjA0YzQ2
NTk3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24gPSBjbGFzcyBXZWJJbnNwZWN0b3JF
eHRlbnNpb24KK3sKKyAgICBjb25zdHJ1Y3RvcihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgZXh0ZW5zaW9uSUQgPT09ICJzdHJp
bmciLCBleHRlbnNpb25JRCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBkaXNwbGF5
TmFtZSA9PT0gInN0cmluZyIsIGRpc3BsYXlOYW1lKTsKKworICAgICAgICB0aGlzLl9leHRlbnNp
b25JRCA9IGV4dGVuc2lvbklEOworICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3BsYXlO
YW1lOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGV4dGVuc2lvbklEKCkgeyBy
ZXR1cm4gdGhpcy5fZXh0ZW5zaW9uSUQ7IH0KKyAgICBnZXQgZGlzcGxheU5hbWUoKSB7IHJldHVy
biB0aGlzLl9kaXNwbGF5TmFtZTsgfQorfTsKKworLy8gTm90ZTogdGhlc2UgdmFsdWVzIGFyZSBz
eW5vbnltb3VzIHdpdGggdGhlIHZhbHVlcyBvZiBlbnVtIGNsYXNzIFdlYktpdDo6SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3IuCitXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlID0gewor
ICAgIENvbnRleHREZXN0cm95ZWQ6ICJDb250ZXh0RGVzdHJveWVkIiwKKyAgICBJbnRlcm5hbEVy
cm9yOiAiSW50ZXJuYWxFcnJvciIsCisgICAgSW52YWxpZFJlcXVlc3Q6ICJJbnZhbGlkUmVxdWVz
dCIsCisgICAgUmVnaXN0cmF0aW9uRmFpbGVkOiAiUmVnaXN0cmF0aW9uRmFpbGVkIiwKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9J
bnNwZWN0b3JGcm9udGVuZEFQSS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCmluZGV4IDFkMWYyODhiYjgzNGQ0
ODJmNjRlMzllZjBmYmQ1Mzg2ZDg3NGRlZjAuLmY5ZDIwYWYxMWY0NmNjZGVkNjVkM2RjMWE5YjQ2
ODNiZjRhZDZkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCkBA
IC0xOTYsNSArMTk2LDE3IEBAIEluc3BlY3RvckZyb250ZW5kQVBJID0gewogICAgICAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRBUEkuZGlzcGF0Y2goSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRp
bmdDb21tYW5kc1tpXSk7CiAKICAgICAgICAgZGVsZXRlIEluc3BlY3RvckZyb250ZW5kQVBJLl9w
ZW5kaW5nQ29tbWFuZHM7Ci0gICAgfQorICAgIH0sCisKKyAgICAvLyBSZXR1cm5zIGEgV0kuV2Vi
SW5zcGVjdG9yRXh0ZW5zaW9uLkVycm9yQ29kZSBpZiBhbiBlcnJvciBvY2N1cnJlZCwgb3RoZXJ3
aXNlIG5vdGhpbmcuCisgICAgcmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlO
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9s
bGVyLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CisgICAgfSwK
KworICAgIC8vIFJldHVybnMgYSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlIGlm
IGFuIGVycm9yIG9jY3VycmVkLCBvdGhlcndpc2Ugbm90aGluZy4KKyAgICB1bnJlZ2lzdGVyRXh0
ZW5zaW9uKGV4dGVuc2lvbklEKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5l
eHRlbnNpb25Db250cm9sbGVyLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQpOworICAg
IH0sCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1s
CmluZGV4IDhiODQ2MmY4OTQ3Y2E5NTUxY2I3ZTNmNmFlNDg5NjM3OTQzM2JkMWUuLjMzMzI0YWM0
ZDkyM2FkZTAwNTFkNWY5MmQyZjM4NTNmMzRjOTJhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTIyMCw2ICsyMjAsNyBAQAogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvVGltZWxpbmVNYXJrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvVGltZWxpbmVSZWNvcmRpbmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvVVJMQnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvV2ViU29ja2V0UmVzb3VyY2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvV3JhcHBlZFByb21pc2UuanMiPjwvc2NyaXB0PgogCkBAIC0yNjMsNiAr
MjY0LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2Vy
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9y
RXh0ZW5zaW9uQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRy
b2xsZXJzL1dvcmtlck1hbmFnZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2OTQwZmQ0MTI1
Zjk2NDc0ZmU0YzFkYTYyZTE4YjA2MTIxYzVkMTRjLi5hYjE1ZmJmNTFlZjM2OGZiZTQ3NDUzNDBk
MjYxN2MyZjczOGJjMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CkBAIC05NSw2ICs5NSw3IEBAICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pF
Q1RfRElSKS9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3Mv
TWVkaWEvQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eS5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNDIsNiArMTQzLDcgQEAgJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJH
ZW9sb2NhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElS
KS9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKyQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KICQoUFJPSkVD
VF9ESVIpL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CmluZGV4IDgyZjY3NjdhMTlmOTMxYTZjNWNkMGI5MWI1YmQwODgzY2I3N2M1YTkuLjRlYjEyNWU5
YWRjNzY1YTVhZThkYzExNzU4N2VlM2U4N2M3N2E0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMzQ4LDYgKzM0OCw5IEBAICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQkNvbm5lY3Rpb25U
b1NlcnZlck1lc3NhZ2VzUmVwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlcy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNz
YWdlc1JlcGxpZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcAor
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVz
c2FnZXNSZXBsaWVzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JJ
bnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2Vz
UmVwbGllcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2Ug
Yi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggM2M5ODc5ZTJhY2RhZjk3
MjQ0MjFlNGY1Y2E3ZTgyY2ZlNzY2N2Y3ZC4uYTc2YjM5NmZlMDUxMzk4NzBhMWIwMWMxNGMxNDFk
Y2Y0NWE5MmM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTg0LDYgKzE4NCw3
IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogCVdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJ
bnRlcnJ1cHREaXNwYXRjaGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SSBcCisJV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyIFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IgXAogCVdlYlByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJIFwKIAlXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CmluZGV4IDcyNjg3MmQ2OGQ5NTdmMDg5Yjc3MWEzZDU1NTlhMjMxMWRiMzA1
ZTYuLmMxYWU5NmM3Y2EyOTVjM2U1ZWJlYjc1YjNjM2MzNDI2OTUxNDE3NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjczLDYgKzY3Myw3IEBAIGRlZiBo
ZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsn
IldlYkZpbmRPcHRpb25zLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVy
U3RhdGUnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5
cGUnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3InOiBbJyJJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIiddLAogICAgICAgICAn
V2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnOiBbJyJMYXllckhvc3RpbmdDb250ZXh0Lmgi
J10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUnOiBbJyJMYXllclRyZWVDb250
ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5o
IiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDZkMDY1NjQ1ZGNlZTYy
ZTU5ZDUwZGJlZjM3NDM1YTQ5YTgwZWI2ODIuLmI3YjdlZTY4OGFhNmZmODkwNWEyMWI3NzhkNGQ5
NjM1MjI1MTYzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTEzNyw2
ICsxMzcsOSBAQCBwdWJsaWM6CiAgICAgICAgIEljb25EYXRhYmFzZSwKICAgICAgICAgSW5zcGVj
dG9yLAogICAgICAgICBJbnNwZWN0b3JDb25maWd1cmF0aW9uLAorI2lmIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKKyAgICAgICAgSW5zcGVjdG9yRXh0ZW5zaW9uLAorI2VuZGlmCiAgICAg
ICAgIEtleVZhbHVlU3RvcmFnZU1hbmFnZXIsCiAgICAgICAgIE1lZGlhQ2FjaGVNYW5hZ2VyLAog
ICAgICAgICBNZXNzYWdlTGlzdGVuZXIsCkBAIC0zODIsNiArMzg1LDkgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBBUEk6Ok9iamVj
dDo6VHlwZTo6SWNvbkRhdGFiYXNlLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVj
dG9yLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbiwK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgICAgIEFQSTo6T2JqZWN0OjpU
eXBlOjpJbnNwZWN0b3JFeHRlbnNpb24sCisjZW5kaWYKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5
cGU6OktleVZhbHVlU3RvcmFnZU1hbmFnZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpN
ZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lc3NhZ2VMaXN0
ZW5lciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCBjOTQyMGNk
NWYyMGRiMTE5OWEyZmYwYTUzNWNlMDA5Y2Y5Mjg2NWE0Li5mOGEwMjhiMDZiNTEwNjEwOGRkYzNj
YmI2OGE0MDFiZmEzNWY3ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tCkBAIC05OSw2ICs5OSwxMCBAQAogI2ltcG9ydCAiX1dLQXBwbGljYXRpb25NYW5pZmVzdElu
dGVybmFsLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNp
bXBvcnQgIl9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgiCisjZW5kaWYKKwogc3RhdGlj
IGNvbnN0IHNpemVfdCBtaW5pbXVtT2JqZWN0QWxpZ25tZW50ID0gYWxpZ25vZihzdGQ6OmFsaWdu
ZWRfc3RvcmFnZTxzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPjo6dHlwZSk7CiBz
dGF0aWNfYXNzZXJ0KG1pbmltdW1PYmplY3RBbGlnbm1lbnQgPj0gYWxpZ25vZih2b2lkKiksICJP
YmplY3RzIHNob3VsZCBhbHdheXMgYmUgYXQgbGVhc3QgcG9pbnRlci1hbGlnbmVkLiIpOwogc3Rh
dGljIGNvbnN0IHNpemVfdCBtYXhpbXVtRXh0cmFTcGFjZUZvckFsaWdubWVudCA9IG1pbmltdW1P
YmplY3RBbGlnbm1lbnQgLSBhbGlnbm9mKHZvaWQqKTsKQEAgLTI3MCw2ICsyNzQsMTIgQEAgdm9p
ZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgd3Jh
cHBlciA9IFtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXTsKICAgICAgICAgYnJlYWs7
CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgY2FzZSBUeXBlOjpJbnNw
ZWN0b3JFeHRlbnNpb246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
IGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdh
dGlvbjoKICAgICAgICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lv
blR5cGVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVz
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZjYyZDNkODIxZTlhNmQ4YTAyZGY5OWEwNDRiYzdiYmI5MDNmYmVj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5z
aW9uVHlwZXMuY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKworI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV1RGOjpTdHJpbmcgaW5zcGVjdG9yRXh0ZW5zaW9u
RXJyb3JUb1N0cmluZyhJbnNwZWN0b3JFeHRlbnNpb25FcnJvciBlcnJvcikKK3sKKyAgICBzd2l0
Y2ggKGVycm9yKSB7CisgICAgY2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxF
cnJvcjoKKyAgICAgICAgcmV0dXJuICJJbnRlcm5hbEVycm9yIl9zOworICAgIGNhc2UgSW5zcGVj
dG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0OgorICAgICAgICByZXR1cm4gIkludmFs
aWRSZXF1ZXN0Il9zOworICAgIGNhc2UgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHRE
ZXN0cm95ZWQ6CisgICAgICAgIHJldHVybiAiQ29udGV4dERlc3Ryb3llZCJfczsKKyAgICBjYXNl
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQ6CisgICAgICAgIHJl
dHVybiAiUmVnaXN0cmF0aW9uRmFpbGVkIl9zOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAiSW50ZXJuYWxFcnJvciI7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWYzZjVlYmZiOGQxNzA1MmQwYjM2ZWEyNzRjY2ZmNWQ3MDM2NWE0ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3VzaW5nIEluc3BlY3RvckV4dGVuc2lvblRhYklEID0gV1RGOjpTdHJpbmc7
Cit1c2luZyBJbnNwZWN0b3JFeHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOworCitlbnVtIGNsYXNz
IEluc3BlY3RvckV4dGVuc2lvbkVycm9yIDogdWludDhfdCB7CisgICAgQ29udGV4dERlc3Ryb3ll
ZCwKKyAgICBJbnRlcm5hbEVycm9yLAorICAgIEludmFsaWRSZXF1ZXN0LAorICAgIFJlZ2lzdHJh
dGlvbkZhaWxlZCwKK307CisKK1dURjo6U3RyaW5nIGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9T
dHJpbmcoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0
OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIFdl
YktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAorICAgICAgICBX
ZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkLAorICAgICAg
ICBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQKKyAg
ICA+OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKaW5kZXggZDUyNzlmZTYyMjk2M2YwNzQ3MzhhYzFlZTU0YzM3NGRjYmU3YjUyNy4u
MzUxYWY0Mjc4Yzk4NTk1OWFlY2ZiMTVkYmYwYWI3Y2I1ZTIwNGI3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBA
IC0xNjEsNiArMTYxLDcgQEAgU2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKIFNoYXJlZC9FZGl0b3JT
dGF0ZS5jcHAKIFNoYXJlZC9Gb250SW5mby5jcHAKIFNoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAor
U2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcAogU2hhcmVkL0xheWVyVHJlZUNvbnRl
eHQuY3BwCiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCiBTaGFyZWQvTmF2aWdhdGlvbkFjdGlv
bkRhdGEuY3BwCkBAIC00MzcsNiArNDM4LDcgQEAgVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAogVUlQ
cm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCitVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VE
ZWJ1Z2dhYmxlLmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKQEAgLTU1MCw2ICs1NTIsNyBAQCBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3IuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCiBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmNwcAog
V2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwCitXZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDA4NGQ1MTM1MmQ0NGE0NTA5NDliM2ZiZDFkMWQ3NjEzNWZiMmJlYjIuLjVk
OWI5M2QxN2FmMjRiZWFhMDIwZTI4NTI5ODU2OTA5YmNiNmVhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTI1OSw2ICsyNTksNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ci5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW0KIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
cldpbmRvdy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnRlcm5hbERlYnVnRmVhdHVyZS5t
bQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZTBmMThhZmUyYzk0ZWM5NzUyN2Y2YjdhZmI0MGRhY2VlZTA0ODBiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVu
c2lvbi5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBJbnNw
ZWN0b3JFeHRlbnNpb24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPE9iamVjdDo6VHlw
ZTo6SW5zcGVjdG9yRXh0ZW5zaW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnNwZWN0
b3JFeHRlbnNpb24+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcikKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckV4dGVuc2lvbihpZGVudGlm
aWVyKSk7CisgICAgfQorCisgICAgZXhwbGljaXQgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFdURjo6U3RyaW5n
IG1faWRlbnRpZmllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3Rvci5oCmluZGV4IDE4OTllODE4YjM2M2U4NWQ0NjBiMzA5NzNi
NGFhMGQ0ODg5OTU5OWUuLjg2YjFjZjg5NjI3OGYxOTcyYjlhNzk5N2M0OTI3NGQxZWVkY2NmNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
LmgKQEAgLTI1LDE3ICsyNSwxNSBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJ
bnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBj
bGFzcyBXS1dlYlZpZXc7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CitAY2xhc3MgX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uOwogQHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlOwogCi1OU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgotCi1AcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdAot
LSAodm9pZCljbG9zZTsKLUBlbmQKLQogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQp
LCBpb3MoMTIuMikpCiBAaW50ZXJmYWNlIF9XS0luc3BlY3RvciA6IE5TT2JqZWN0IDxfV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0PgogCkBAIC01Miw2ICs1MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKQogCiAtICh2b2lkKWNvbm5lY3Q7CiAtICh2b2lk
KXNob3c7CistICh2b2lkKWNsb3NlOwogLSAodm9pZCloaWRlOwogLSAodm9pZClzaG93Q29uc29s
ZTsKIC0gKHZvaWQpc2hvd1Jlc291cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4IDY3MzQxMWYzMGVmMWQxMDhlMWQ0NDQ3
NDE5NGJjY2E4ZjkzZDFmNmIuLjZjMDBiOTZkZDE5NWQwMThmNmYzNjMyOTdiOGU5YWY0MzY2YzRl
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3Rvci5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwu
aCIKIAogI2ltcG9ydCAiSW5zcGVjdG9yRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLRXJyb3IuaCIK
ICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgpAQCAtMzcsNiArMzgsMTMgQEAKICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYg
RU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0ZW5z
aW9uLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5o
IgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgorI2VuZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0b3IKIAog
Ly8gTUFSSzogX1dLSW5zcGVjdG9yIG1ldGhvZHMKQEAgLTE5NCw0ICsyMDIsMzggQEAgLSAoQVBJ
OjpPYmplY3QmKV9hcGlPYmplY3QKICAgICByZXR1cm4gKl9pbnNwZWN0b3I7CiB9CiAKKy8vIE1B
Uks6IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcworCistICh2b2lkKXJlZ2lzdGVy
RXh0ZW5zaW9uV2l0aElEOihOU1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0
cmluZyAqKWRpc3BsYXlOYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwg
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xs
ZXIoKS5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0
ZWRFeHRlbnNpb25JRCA9IHJldGFpblB0cihleHRlbnNpb25JRCksIHByb3RlY3RlZFNlbGYgPSBy
ZXRhaW5QdHIoc2VsZiksIGNhcHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4g
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNh
cHR1cmVkQmxvY2soW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpX
S0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktl
eTogaW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmls
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxv
Y2sobmlsLCBbW3dyYXBwZXIoQVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0
ZWRFeHRlbnNpb25JRC5nZXQoKSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdKTsKKyAgICB9KTsKKyNl
bHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOworI2VuZGlm
Cit9CisKKy0gKHZvaWQpdW5yZWdpc3RlckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
ICopZXh0ZW5zaW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgX2lu
c3BlY3Rvci0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5z
aW9uLmV4dGVuc2lvbklELCBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVy
ZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29s
LCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
OkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JFeHRlbnNpb25F
cnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsKTsKKyAgICB9KTsKKyNlbHNlCisg
ICAgY29tcGxldGlvbkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21h
aW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKKyNlbmRpZgorfQorCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmM1YTYwMWVkMmNmMzE0ZTdhOGJmODYyMzll
ODBiNGIxYWE5YmM4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24uaApAQCAtMCwwICsxLDQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNT
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSkKK0BpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7
CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKmV4dGVuc2lvbklE
OworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2Y3ZGU5NDNkNWFjMzEzMWZkMTU3ZmM4ZmI1ODU5ZjEyNzE4NDEzMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb24ubW0KQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvckV4dGVu
c2lvbgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhJZGVudGlmaWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklECit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBUEk6
Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPihzZWxm
LCBleHRlbnNpb25JRCk7CisgICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVh
bGxvYworeworICAgIF9leHRlbnNpb24tPkFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjp+SW5zcGVj
dG9yRXh0ZW5zaW9uKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKworLSAoQVBJOjpP
YmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9leHRlbnNpb247Cit9CisKKy8vIE1B
Uks6IFByb3BlcnRpZXMuCisKKy0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKK3sKKyAgICByZXR1
cm4gX2V4dGVuc2lvbi0+aWRlbnRpZmllcigpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVu
c2lvbkhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JFeHRlbnNpb25Ib3N0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg3ZDk2Mzk4MjcxY2EzZmIxZTk5MTM3NDI0
OGRiZGQ3ZDQzMzUxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmgKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xh
c3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOworCitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uSG9zdAorQG9wdGlvbmFsCisKKy8qKgorICogQGFic3RyYWN0IFJlZ2lzdGVycyBhIFdlYiBF
eHRlbnNpb24gd2l0aCB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yLgorICogQHBhcmFtIGV4
dGVuc2lvbklEIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBleHRlbnNpb24uCisgKiBAcGFy
YW0gZGlzcGxheU5hbWUgQSBsb2NhbGl6ZWQgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9u
LgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8g
YmUgY2FsbGVkIHdoZW4gcmVnaXN0cmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgorICoKKyAqIFdl
YiBFeHRlbnNpb25zIGluIFdlYiBJbnNwZWN0b3IgYXJlIGFjdGl2ZSBhcyBzb29uIGFzIHRoZXkg
YXJlIHJlZ2lzdGVyZWQuCisgKi8KKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5T
U3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyoqCisgKiBA
YWJzdHJhY3QgVW5yZWdpc3RlcnMgYSBXZWIgRXh0ZW5zaW9uIHdpdGggdGhlIGFzc29jaWF0ZWQg
V2ViIEluc3BlY3Rvci4KKyAqIEBwYXJhbSBleHRlbnNpb25JRCBBIHVuaXF1ZSBpZGVudGlmaWVy
IGZvciB0aGUgZXh0ZW5zaW9uLgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21w
bGV0aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gdW5yZWdpc3RlcmluZyBzdWNjZWVkcyBv
ciBmYWlscy4KKyAqCisgKiBVbnJlZ2lzdGVyaW5nIGFuIGV4dGVuc2lvbiB3aWxsIGF1dG9tYXRp
Y2FsbHkgY2xvc2UgYW55IGFzc29jaWF0ZWQgc2lkZWJhcnMvdGFicy4KKyAqLworLSAodm9pZCl1
bnJlZ2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhh
bmRsZXI7CisKKy8qKgorICogQGFic3RyYWN0IENsb3NlcyB0aGUgYXNzb2NpYXRlZCBXZWIgSW5z
cGVjdG9yIGluc3RhbmNlLiBUaGlzIHdpbGwgY2F1c2UgYWxsCisgKiByZWdpc3RlcmVkIF9XS0lu
c3BlY3RvckV4dGVuc2lvbnMgdG8gYmUgdW5yZWdpc3RlcmVkIGFuZCBpbnZhbGlkYXRlZC4KKyAq
LworLSAodm9pZCljbG9zZTsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwYzQ1ZDU0MDg4MWQ1NGY4NzQ3
ZDIxNTY0MmNkODhhZmM5ZDBkMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgi
CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQgIkFQSUluc3Bl
Y3RvckV4dGVuc2lvbi5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRl
bnNpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tJbnNwZWN0b3JFeHRlbnNpb247
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KworQGludGVyZmFjZSBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKCkgPFdLT2JqZWN0PiB7CitAcGFj
a2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4gX2V4
dGVuc2lvbjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJp
bmcgKilleHRlbnNpb25JZGVudGlmaWVyOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VO
RAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaAppbmRleCBiOWE4YjIwMjAwNTI5YTQyZGE0
YWZjMjNkNGZkNGNmMTIwYzg2ODFjLi5iYTNmYzEzM2IzZmE1NjAyYTdmZDRiNzVmOTJiYjQzMmM2
OGU0NDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaApA
QCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmg+CiAKICNpZiAhVEFS
R0VUX09TX0lQSE9ORQogCkBAIC00NCw3ICs0NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFdLUmVtb3RlV2ViSW5zcGVjdG9yRGVidWdnYWJsZVR5cGUpIHsKIH0gV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMi4zKSwgaW9zKDEwLjMpKTsKIAogV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zKDEwLjEyLjMpLCBpb3MoMTAuMykpCi1AaW50ZXJmYWNlIF9XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyIDogTlNPYmplY3QKK0BpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgOiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdD4K
IAogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaWQgPF9XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggNGU0MGI4YjdhNzVmNWY3MDM1NWQwMWRk
NzU1N2NkYjFiYWFmYzQ0Yy4uOTFiZDU4ZjRkMTIyOGI4ZmU0ZjUwMWQyYzhmOGE1ZDBhNzNlYTc3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAt
MzYsNiArMzYsMTQgQEAKICNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIgogCisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0
ZW5zaW9uLmgiCisjaW1wb3J0ICJXS0Vycm9yLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9u
SW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2VuZGlmCisKIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCiAKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgKCkKQEAgLTE4Miw2ICsxOTAsNDAgQEAgLSAodm9pZClfc2V0RGlhZ25vc3RpY0xv
Z2dpbmdEZWxlZ2F0ZTooaWQ8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4gX051bGxhYmwK
ICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJs
ZSghIWRlbGVnYXRlKTsKIH0KIAorLy8gTUFSSzogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBt
ZXRob2RzCisKKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0
ZW5zaW9uSUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoTlNFcnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9y
ZW1vdGVJbnNwZWN0b3JQcm94eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5z
aW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0
YWluUHRyKGV4dGVuc2lvbklEKSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2Fw
dHVyZWRCbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxi
b29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJ
bmZvOkB7IE5TTG9jYWxpemVkRmFpbHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JFeHRlbnNp
b25FcnJvclRvU3RyaW5nKHJlc3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihB
UEk6Okluc3BlY3RvckV4dGVuc2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgp
KSkgcmV0YWluXSBhdXRvcmVsZWFzZV0pOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJy
b3JVbmtub3duIHVzZXJJbmZvOm5pbF0sIG5pbCk7CisjZW5kaWYKK30KKworLSAodm9pZCl1bnJl
Z2lzdGVyRXh0ZW5zaW9uOihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5
LT5leHRlbnNpb25Db250cm9sbGVyKCkudW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0
ZW5zaW9uSUQsIFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2Nr
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghcmVzdWx0KSB7CisgICAgICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNM
b2NhbGl6ZWRGYWlsdXJlUmVhc29uRXJyb3JLZXk6IGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9T
dHJpbmcocmVzdWx0LmVycm9yKCkpfV0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2Rl
OldLRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pOworI2VuZGlmCit9CisKIEBlbmQKIAogTlNf
QVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBiMDQ3Mzkz
MWQ3MzEwZjI1OGU5YmVjY2U3MGNlNTIyYzg5YTdlOWU0Li5mNWEwMjJlYTJlMGM5NzNkYjgzMjlm
MDg4YzU4YzcwMTkzYjA5M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTM2LDYg
KzM2LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVO
U0lPTlMpCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
aCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC05NSw2ICs5OSwxMyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIG1faW5zcGVjdG9y
UGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9G
cm9udGVuZChtZXNzYWdlKSk7CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZy
b250ZW5kTG9hZGVkKCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAg
bV9leHRlbnNpb25Db250cm9sbGVyLT5pbnNwZWN0b3JGcm9udGVuZExvYWRlZCgpOworI2VuZGlm
Cit9CisKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kRGlkQ2xvc2UoKQog
ewogICAgIFJlZjxSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4gcHJvdGVjdCgqdGhpcyk7CkBAIC0x
NzUsNiArMTg2LDEwIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250
ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCpt
X2luc3BlY3RvclBhZ2UsIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOwor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJv
bGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+
KCptX2luc3BlY3RvclBhZ2UpOworI2VuZGlmCiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgK
aW5kZXggYzAzYTJjYTU3MGQ5ZjZmODBlYmFhZTU0ZmI5M2FkMjU3MGNiNWZhYS4uMGYxYzA5OGY0
MzU5ZDQzZTViZTg1ZGYxN2I2Yjg2NTNmMTBlYjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgK
QEAgLTU2LDYgKzU2LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlZpZXc7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHk7CisjZW5kaWYKIAogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlD
bGllbnQgewogcHVibGljOgpAQCAtODgsNiArOTEsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eSYgZXh0ZW5zaW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2V4dGVu
c2lvbkNvbnRyb2xsZXI7IH0KKyNlbmRpZgorICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBO
U1dpbmRvdyAqd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3cuZ2V0KCk7IH0KICAgICBX
S1dlYlZpZXcgKndlYlZpZXcoKSBjb25zdDsKQEAgLTExNyw2ICsxMjQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcy4K
KyAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCk7CiAgICAgdm9pZCBmcm9udGVuZERpZENsb3NlKCk7
CiAgICAgdm9pZCByZW9wZW4oKTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKTsKQEAgLTE0OSw2ICsx
NTcsMTAgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCogbV9j
bGllbnQgeyBudWxscHRyIH07CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBu
dWxscHRyIH07CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVu
c2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKKyAgICAKICAgICBSZWY8QVBJOjpEZWJ1Z2dhYmxlSW5m
bz4gbV9kZWJ1Z2dhYmxlSW5mbzsKICAgICBTdHJpbmcgbV9iYWNrZW5kQ29tbWFuZHNVUkw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzYmVmZmQ1MWFk
OTRiZjA1NWU0OTcyYjZjY2RmMjkyNzc5MjY0ZjIxLi42NzRiZWMzMjQ2ZDM4ODkzZDU1MmU0NjZi
N2VkN2VjZDJlMDhmZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0yMSw2ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFJlbW90
ZVdlYkluc3BlY3RvclByb3h5IHsKKyAgICBGcm9udGVuZExvYWRlZCgpCiAgICAgRnJvbnRlbmRE
aWRDbG9zZSgpCiAgICAgUmVvcGVuKCkKICAgICBSZXNldFN0YXRlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmlu
ZGV4IGYwZjdiMmRmNWU0MTkyYWM0NTQ4YjhmN2JjYjk5N2QxZjEzMGQ0NjAuLjA4MGIxNThmMDFm
N2JkOTZiMTAwMTQ0MTRkNTVjNGM3OGNhNTZhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyLmgiCkBAIC00MjEsNiArNDIyLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNy
ZWF0ZUZyb250ZW5kUGFnZSgpCiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+aWRlbnRpZmllcigpLCAqdGhpcyk7CiAgICAgbV9p
bnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqbV9pbnNw
ZWN0b3JQYWdlLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsKKworI2lm
IEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIg
PSBtYWtlVW5pcXVlPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PigqbV9p
bnNwZWN0b3JQYWdlKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVu
TG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpCkBA
IC01NDYsNiArNTUxLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQ
YWdlQW5kV2luZG93KCkKICAgICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0Zm9ybURl
dGFjaCgpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5z
aW9uQ29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKKyAgICAKICAgICAvLyBOdWxsIG91dCBt
X2luc3BlY3RvclBhZ2UgYWZ0ZXIgcGxhdGZvcm1EZXRhY2goKSwgc28gdGhlIHZpZXdzIGNhbiBi
ZSBjbGVhbmVkIHVwIGNvcnJlY3RseS4KICAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwog
CkBAIC01NzEsNiArNTgwLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kTG9h
ZGVkKCkKIAogICAgIGlmIChhdXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAg
YXV0b21hdGlvblNlc3Npb24tPmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCptX2luc3BlY3RlZFBh
Z2UpOworICAgIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVu
c2lvbkNvbnRyb2xsZXItPmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCk7CisjZW5kaWYKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YnJpbmdUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggMTRk
NDc3ZThkNzlhMWMzOTc5YWM1YTg5NzYwYmMzZGYwZjVlOWM4NC4uZjU1NDFiZjcwMjgxN2ViYzhi
ZTM2NTI1ZGFjMzA5Zjg2NTQ1OGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTY5LDYgKzcwLDkgQEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYkluc3Bl
Y3RvclByb3h5Q2xpZW50OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5j
ZXM7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk7CisjZW5kaWYKIAogZW51bSBjbGFzcyBBdHRhY2ht
ZW50U2lkZSB7CiAgICAgQm90dG9tLApAQCAtODAsNiArODQsNyBAQCBjbGFzcyBXZWJJbnNwZWN0
b3JQcm94eQogICAgIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
SW5zcGVjdG9yPgogICAgICwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJs
aWMgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxXZWJJbnNwZWN0b3JQcm94eT4KICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBwdWJsaWMgV2Vi
Q29yZTo6V2luZG93TWVzc2FnZUxpc3RlbmVyCiAjZW5kaWYKQEAgLTEwMiw2ICsxMDcsMTAgQEAg
cHVibGljOgogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW5zcGVjdGVkUGFnZTsgfQogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yUGFnZTsgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorICAgIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBl
eHRlbnNpb25Db250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29udHJvbGxl
cjsgfQorI2VuZGlmCisKICAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFt
X2luc3BlY3RvclBhZ2U7IH0KICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNWaXNpYmxlOyB9CiAgICAgYm9vbCBpc0Zyb250KCk7CkBAIC0yODYsNiArMjk1LDEwIEBAIHBy
aXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRyIH07CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yQ2xpZW50PiBtX2luc3BlY3RvckNsaWVu
dDsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29u
dHJvbGxlcjsKKyNlbmRpZgorICAgIAogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1Zpc2libGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0F0dGFjaGVkIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhiOWFiZDcwYmQwZmY2MzM5ZTIyYjM4MzlmZTdlMzFiZGYyNjNm
OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTAz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
X0VYVEVOU0lPTlMpCisKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3NQcm94eS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5KFdlYlBhZ2VQcm94eSYgaW5zcGVjdG9yUGFnZSkKKyAgICA6IG1faW5zcGVjdG9yUGFnZSht
YWtlV2Vha1B0cihpbnNwZWN0b3JQYWdlKSkKK3sKK30KKworV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eSgpCit7CisgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IG1faW5zcGVjdG9yUGFnZSA9IG51bGxwdHI7CisKKyAgICBhdXRvIGNhbGxiYWNrcyA9IHN0ZDo6
ZXhjaGFuZ2UobV9mcm9udGVuZExvYWRlZENhbGxiYWNrUXVldWUsIHsgfSk7CisgICAgZm9yIChh
dXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKwordm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6d2hlbkZyb250ZW5kSGFz
TG9hZGVkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9mcm9udGVu
ZExvYWRlZCAmJiBtX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlLmFw
cGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyUHJveHk6Omluc3BlY3RvckZyb250ZW5kTG9hZGVkKCkKK3sKKyAgICBBU1NF
UlQobV9pbnNwZWN0b3JQYWdlKTsKKworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisg
ICAgYXV0byBjYWxsYmFja3MgPSBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFj
a1F1ZXVlLCB7IH0pOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAg
ICAgIGNhbGxiYWNrKCk7Cit9CisKKy8vIEFQSQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5OjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRl
bnNpb25JRCYgZXh0ZW5zaW9uSUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJv
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVn
aXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCwgZGlzcGxheU5hbWUgfSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4
dGVuc2lvbklEJiBleHRlbnNpb25JRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgd2hlbkZyb250ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCBleHRlbnNpb25JRCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlz
LT5tX2luc3BlY3RvclBhZ2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVj
dG9yUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXI6OlVucmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCB9LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDM0
MTBhYjRmMTRjOWE4NDFhMDM5YmY4YTM5YTVhMjJiYjc3MGRkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiSW5z
cGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNp
bmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IGZp
bmFsCisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KTsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJveHkmIGlu
c3BlY3RvclBhZ2UpOworICAgIHZpcnR1YWwgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlclByb3h5KCk7CisKKyAgICAvLyBBUEkuCisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihj
b25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4pPiYmKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVj
dG9yRXh0ZW5zaW9uSUQmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9v
bCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CisKKyAgICAvLyBOb3RpZmljYXRpb25z
LgorICAgIHZvaWQgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKTsKKworcHJpdmF0ZToKKyAgICB2
b2lkIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYpOworCisgICAgV2Vh
a1B0cjxXZWJQYWdlUHJveHk+IG1faW5zcGVjdG9yUGFnZTsKKworICAgIC8vIFVzZWQgdG8gcXVl
dWUgYWN0aW9ucyBzdWNoIGFzIHJlZ2lzdGVyaW5nIGV4dGVuc2lvbnMgdGhhdCBoYXBwZW4gZWFy
bHkgb24uCisgICAgLy8gVGhlcmUncyBubyBwb2ludCBzZW5kaW5nIHRoZXNlIGJlZm9yZSB0aGUg
ZnJvbnRlbmQgaXMgZnVsbHkgbG9hZGVkLgorICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBt
X2Zyb250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZTsKKworICAgIGJvb2wgbV9mcm9udGVuZExvYWRl
ZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbQppbmRleCA3NWQ3ZDhlNTdmOGQ3ZGY1YzE2NDU2Y2NmMDc1YmZjOTgyOGQ1Yzll
Li4zODYwZDk2OGViNmJmOTk0ZmE0YmJjZTRlNjVjYmNkZTU5YjU1OTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhl
bnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xNDgsMTQgKzE0OCwxNCBAQCBzdGF0
aWMgT3B0aW9uYWw8VmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4g
Z2V0RXhpc3RpbmdDcmVkZW50aQogICAgICAgICB9CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlTWFw
ID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRNYXAoKTsKIAotICAgICAgICBhdXRvIGl0ID0gcmVzcG9u
c2VNYXAuZmluZChDQk9SKGtFbnRpdHlJZE1hcEtleSkpOworICAgICAgICBhdXRvIGl0ID0gcmVz
cG9uc2VNYXAuZmluZChDQk9SKGZpZG86OmtFbnRpdHlJZE1hcEtleSkpOwogICAgICAgICBpZiAo
aXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpIHsK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICAgICAgfQogICAgICAgICBhdXRvJiB1c2VySGFuZGxlID0gaXQtPnNl
Y29uZC5nZXRCeXRlU3RyaW5nKCk7CiAKLSAgICAgICAgaXQgPSByZXNwb25zZU1hcC5maW5kKENC
T1Ioa0VudGl0eU5hbWVNYXBLZXkpKTsKKyAgICAgICAgaXQgPSByZXNwb25zZU1hcC5maW5kKENC
T1IoZmlkbzo6a0VudGl0eU5hbWVNYXBLZXkpKTsKICAgICAgICAgaWYgKGl0ID09IHJlc3BvbnNl
TWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTI5
OSw4ICsyOTksOCBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVu
dGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3NDbwogICAgIGNvbnN0IGF1dG8mIHNl
Y0F0dHJMYWJlbCA9IGNyZWF0aW9uT3B0aW9ucy5ycC5pZDsKIAogICAgIGNib3I6OkNCT1JWYWx1
ZTo6TWFwVmFsdWUgdXNlckVudGl0eU1hcDsKLSAgICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JW
YWx1ZShrRW50aXR5SWRNYXBLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMu
dXNlci5pZFZlY3Rvcik7Ci0gICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9SVmFsdWUoa0VudGl0
eU5hbWVNYXBLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1l
KTsKKyAgICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JWYWx1ZShmaWRvOjprRW50aXR5SWRNYXBL
ZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvcik7Cisg
ICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9SVmFsdWUoZmlkbzo6a0VudGl0eU5hbWVNYXBLZXkp
XSA9IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1lKTsKICAgICBhdXRv
IHVzZXJFbnRpdHkgPSBjYm9yOjpDQk9SV3JpdGVyOjp3cml0ZShjYm9yOjpDQk9SVmFsdWUoV1RG
TW92ZSh1c2VyRW50aXR5TWFwKSkpOwogICAgIEFTU0VSVCh1c2VyRW50aXR5KTsKICAgICBhdXRv
IHNlY0F0dHJBcHBsaWNhdGlvblRhZyA9IHRvTlNEYXRhKCp1c2VyRW50aXR5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFkNjNjMmIz
ZTI5ODc4NzdiYWYyZjU1ODhlNjdjMDA3NjM1YjE0ZTQuLjhhY2E2MDUyNWZiM2I5MzM5MGJlNzIy
NDdmOTJlZDZiMjI5Y2VmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTQzNyw4ICsxNDM3LDE1IEBACiAJCTk5NTVBNkY2MUM3OTg2
RTMwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYyMUM3OTg2NjQwMEVCNkE5
MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCAqLzsgfTsKIAkJOTk1NUE2RjcxQzc5
ODZFNTAwRUI2QTkzIC8qIEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5
MyAvKiBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmggKi87IH07CiAJCTk5Nzg4QUNCMUY0MjFE
REEwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzg4QUM5MUY0MjFEQ0Ew
MEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OTc5NjU5RTI1MzEwQTQ5
MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzk2NTlBMjUz
MTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdl
cy5oICovOyB9OworCQk5OTc5NjU5RjI1MzEwQTQ5MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzk2NTlCMjUzMTBBNDgwMEIzMUFFMyAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OworCQk5OTc5NjVBMzI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9z
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1
QTIyNTMxMjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTc5Q0E1ODIzN0Y0
OUYxMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9X
S0luc3BlY3RvclByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5OTk5NkE5RjI1MDA0QkNDMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJp
dmF0ZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5OTk2QTlEMjUwMDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9y
VGVzdGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTk5QjE2NzU3MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzU0MjUy
QkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OUIxNjc1ODI1MkJCN0UxMDA3MzE0
MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzU1MjUyQkI3RTEwMDczMTQwRSAvKiBf
V0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICovOyB9OworCQk5OUIxNjc1QjI1MkJCQURE
MDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzVBMjUyQkJB
REQwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oICov
OyB9OworCQk5OUIxNjc2NDI1MkJCRTYyMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OUIxNjc2MTI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLmggKi87IH07CiAJCTk5QzNBRTJEMURBREE2QUQwMEFGNUMxNiAvKiBXZWJBdXRv
bWF0aW9uU2Vzc2lvbk1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTlDM0FFMkMxREFEQTZBNzAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uTWFjcm9zLmggKi87IH07CiAJCTk5QzgxRDVBMUMyMEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0
aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OUM4MUQ1NTFDMjBERkJFMDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovOyB9Owog
CQk5OUM4MUQ1RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENUIxQzIwRTgx
NzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKQEAgLTQ1NzYsOSArNDU4
MywyMyBAQAogCQk5OTU1QTZGMzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29s
T2JqZWN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBdXRvbWF0aW9uUHJv
dG9jb2xPYmplY3RzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dG9tYXRpb25Q
cm90b2NvbE9iamVjdHMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
OTk3ODhBQzkxRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vz
c2lvbkNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhB
Q0ExRjQyMURDQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0F1dG9tYXRpb25T
ZXNzaW9uQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk3
OTY1OUEyNTMxMEE0ODAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTk5Nzk2NTlCMjUzMTBBNDgwMEIzMUFF
MyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTk3OTY1QTIyNTMx
MjhDNzAwQjMxQUUzIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUgLyogX1dLSW5z
cGVjdG9yUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNw
ZWN0b3JQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OTk2QTlEMjUw
MDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTk5NkE5RTI1MDA0QkNCMDA0Rjc1NTkg
LyogX1dLSW5zcGVjdG9yVGVzdGluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IF9XS0luc3BlY3RvclRlc3RpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5OUI3RUQ4MjU1MEU0QTgwMEY0NTBBNCAvKiBJbnNwZWN0b3JFeHRlbnNpb25UeXBl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBf
V0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
QjE2NzU1MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb25J
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc1NjI1MkJCN0Ux
MDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NjAyNTJCQkU2MTAwNzMx
NDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc2MTI1MkJCRTYxMDA3
MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc2MjI1MkJCRTYxMDA3MzE0MEUg
LyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCRTNCMTIyNTQyMkY0MTAwQzY1
NTFDIC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUElJbnNwZWN0b3JFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTlCRTNCMTYyNTQzM0I5NDAwQzY1NTFDIC8qIEluc3BlY3RvckV4dGVuc2lvblR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5QzNBRTIzMURBRDhFMzQwMEFGNUMxNiAvKiBXZWJBdXRvbWF0
aW9uU2Vzc2lvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OUMzQUUyNjFEQUQ5NDg1MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25T
ZXNzaW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNBRTJDMURB
REE2QTcwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE1Miw2ICs2MTczLDggQEAKIAkJCQk1QzEyMUU4
MzI0MTAxRjcwMDA0ODZGOUIgLyogRnJhbWVUcmVlTm9kZURhdGEuaCAqLywKIAkJCQkxQUM3NUEx
QTFCMzM2ODI3MDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyLmggKi8sCiAJCQkJQkND
RjZCMjMxMkM5M0U3QTAwOEY5QzM1IC8qIEltYWdlT3B0aW9ucy5oICovLAorCQkJCTk5OUI3RUQ4
MjU1MEU0QTgwMEY0NTBBNCAvKiBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAgKi8sCisJCQkJ
OTlCRTNCMTYyNTQzM0I5NDAwQzY1NTFDIC8qIEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmggKi8s
CiAJCQkJMUE5MkRDMTIxMkY4QkFCOTAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuY3BwICov
LAogCQkJCTFBOTJEQzEwMTJGOEJBNDYwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmggKi8s
CiAJCQkJMkQxMDg3NUUxRDJDNTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCAqLywK
QEAgLTczNzAsNiArNzM5MywxMCBAQAogCQkJCTk5MUY0OTJFMjNBODEyQzYwMDU0NjQyQiAvKiBf
V0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5tbSAqLywKIAkJCQk5OTAzNkFFMTIzQTk0OUNFMDAw
MEIwNkEgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oICovLAogCQkJCTkx
OTc5NDBCMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAorCQkJ
CTk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywK
KwkJCQk5OUIxNjc1NjI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1t
ICovLAorCQkJCTk5Nzk2NUEyMjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25Ib3N0LmggKi8sCisJCQkJOTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3Rv
ckV4dGVuc2lvbkludGVybmFsLmggKi8sCiAJCQkJNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8q
IF9XS0luc3BlY3RvckludGVybmFsLmggKi8sCiAJCQkJOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1
IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCAqLywKIAkJCQk5OTk5NkE5RDI1MDA0QkNCMDA0Rjc1
NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCAqLywKQEAgLTg2NzksNiArODcw
Niw4IEBACiAJCQkJMUM4RTI4MzMxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5
LmNwcCAqLywKIAkJCQkxQzhFMjgzMjEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJv
eHkuaCAqLywKIAkJCQkxQzc3QzE5NTEyODhBODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJv
eHkubWVzc2FnZXMuaW4gKi8sCisJCQkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCAqLywKKwkJCQk5OUIxNjc1QTI1
MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
aCAqLywKIAkJCQlBNTVCQTgyNzFCQTM4RTFFMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0
aWVzLmNwcCAqLywKIAkJCQlBNTVCQTgyODFCQTM4RTFFMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9y
VXRpbGl0aWVzLmggKi8sCiAJCQkJQTVFQzZBRDIyMTUxQkQ2OTAwNjc3RDE3IC8qIFdlYlBhZ2VE
ZWJ1Z2dhYmxlLmNwcCAqLywKQEAgLTg3NDEsNiArODc3MCw5IEBACiAJCQkJMUM4OTFENjIxOUIx
MjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmNwcCAqLywKIAkJCQkxQzg5MUQ2MzE5QjEy
NEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCAqLywKIAkJCQkxQzg5MUQ2NDE5QjEyNEZG
MDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gKi8sCisJCQkJOTlCMTY3NjAy
NTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAg
Ki8sCisJCQkJOTlCMTY3NjEyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlci5oICovLAorCQkJCTk5QjE2NzYyMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJQTU0M0Uz
MEEyMTVDOEE4NDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwICovLAogCQkJ
CUE1NDNFMzA4MjE1QzhBODMwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmggKi8s
CiAJCQkJQTU0M0UzMDkyMTVDOEE4MzAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRD
b250cm9sbGVyLmNwcCAqLywKQEAgLTkzNjYsNiArOTM5OCw3IEBACiAJCQkJOTE5Nzk0MDkyM0RC
QzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3RvckNsaWVudC5oICovLAogCQkJCTk5NEM2MDQ4MjUz
RjgyMDIwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQk5
OTRDNjA0NjI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICov
LAorCQkJCTk5QkUzQjEyMjU0MjJGNDEwMEM2NTUxQyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24u
aCAqLywKIAkJCQkzMUIzNjI5MDIxNDFFQUJDMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0Zl
YXR1cmUuY3BwICovLAogCQkJCTMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAvKiBBUElJbnRlcm5h
bERlYnVnRmVhdHVyZS5oICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElM
ZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLApAQCAtMTAzOTYsNiArMTA0MjksOCBAQAog
CQkJCTFDOEUyQTMyMTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oICov
LAogCQkJCTFDQThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYklu
c3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQk5OTc5NjU5QjI1MzEwQTQ4MDBCMzFBRTMg
LyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LywKKwkJCQk5OTc5NjU5QTI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyTWVzc2FnZXMuaCAqLywKIAkJCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEg
LyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDQkJFNDlGMTlC
NjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi8sCiAJCQkJNTFGMDYw
REQxNjU0MzE3NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCkBAIC0xMDgxMSw2ICsxMDg0Niw5IEBACiAJCQkJOTkxRjQ5MkYyM0E4MTJDNjAwNTQ2NDJC
IC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTAz
NkFFMjIzQTk0OUNGMDAwMEIwNkEgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MEMyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0lu
c3BlY3RvckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc1NzI1MkJCN0UxMDA3
MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTc5
NjVBMzI1MzEyOEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTlCMTY3NTgyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4
dGVuc2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0FGREU0NzIxMzA4NDZBMDBC
MUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NzlD
QTU4MjM3RjQ5RjEwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OTk5NkE5RjI1MDA0QkNDMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZv
clRlc3RpbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMTE1NDgsNiArMTE1ODYsOSBAQAogCQkJCTFD
OEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBX
ZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlCMTY3NjQyNTJCQkU2MjAwNzMx
NDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTk3OTY1OUUyNTMxMEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc1QjI1MkJCQURE
MDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDQkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVCQTgyQjFCQTM4RTYxMDA3Q0QzM0Qg
LyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREE5NDRBMDE4
ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKQEAg
LTEzMzY3LDYgKzEzNDA4LDcgQEAKIAkJCQlGRURCRENENjFFNjhEMjAwMDBBNTlGOEYgLyogV2Vi
SW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzhFMkEzNTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMy
QiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5OTc5NjU5RjI1MzEwQTQ5MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQkJFNEEw
MTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDkyQTc4QTIxMkI2QUIxMDBGNDkzRkQgLyogV2ViS2V5Ym9hcmRF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2QUQ5RjkgLyog
V2ViS2l0Lm0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggNjc3MWM2
ZjBkZTYzMWZjYzE0MmVmNjA4NmZlMGFhYmU3NGM3ZjY1My4uZDEzOTBiZmQ2ZjZiZTIzMTU2Njdj
MDRmZDZiZWMzZDZhYzE1NTJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTM5LDYgKzM5
LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05T
KQorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIgorI2VuZGlm
CisKICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oV0lO
KQogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNlbmRpZgpAQCAtNTgsOCAr
NjIsMTQgQEAgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OlJlbW90ZVdlYkluc3BlY3RvclVJKFdlYlBh
Z2UmIHBhZ2UpCiAgICAgV2ViSW5zcGVjdG9yVUk6OmVuYWJsZUZyb250ZW5kRmVhdHVyZXMoKTsK
IH0KIAorUmVtb3RlV2ViSW5zcGVjdG9yVUk6On5SZW1vdGVXZWJJbnNwZWN0b3JVSSgpID0gZGVm
YXVsdDsKKwogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6aW5pdGlhbGl6ZShEZWJ1Z2dhYmxl
SW5mb0RhdGEmJiBkZWJ1Z2dhYmxlSW5mbywgY29uc3QgU3RyaW5nJiBiYWNrZW5kQ29tbWFuZHNV
UkwpCiB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9u
Q29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
PigqdGhpcyk7CisjZW5kaWYKKwogICAgIG1fZGVidWdnYWJsZUluZm8gPSBXVEZNb3ZlKGRlYnVn
Z2FibGVJbmZvKTsKICAgICBtX2JhY2tlbmRDb21tYW5kc1VSTCA9IGJhY2tlbmRDb21tYW5kc1VS
TDsKIApAQCAtMTA5LDYgKzExOSw4IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmZyb250
ZW5kTG9hZGVkKCkKIAogICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1h
bmRXaXRoUmVzdWx0QXN5bmMoInNldElzVmlzaWJsZSJfcywgeyBKU09OOjpWYWx1ZTo6Y3JlYXRl
KHRydWUpIH0pOwogCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkZyb250
ZW5kTG9hZGVkKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOworCiAgICAgYnJpbmdUb0Zyb250KCk7
CiB9CiAKQEAgLTE3NCw2ICsxODYsMTAgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6Y2xv
c2VXaW5kb3coKQogewogICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVy
KCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cik7CiAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbnVsbHB0cjsK
KyNlbmRpZgorICAgIAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpGcm9u
dGVuZERpZENsb3NlKCksIG1fcGFnZS5pZGVudGlmaWVyKCkpOwogfQogCkBAIC0yNTgsNiArMjc0
LDEyIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNldERpYWdub3N0aWNMb2dnaW5nQXZh
aWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogfQogI2VuZGlmCiAKK1dlYkNvcmU6OlBhZ2UqIFJlbW90
ZVdlYkluc3BlY3RvclVJOjpmcm9udGVuZFBhZ2UoKQoreworICAgIHJldHVybiBtX3BhZ2UuY29y
ZVBhZ2UoKTsKK30KKworCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykgJiYg
IVBMQVRGT1JNKFdJTikKIFN0cmluZyBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3Ry
aW5nc1VSTCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclVJLmgKaW5kZXggMDI1ZWM5MGExZDRhZjFj
OWY1NTNkYmM0MmY3YzkzOWZkNDM5ODQ5My4uYjhkYTlhOWY4YTVhNzY2ZDEzNjEyMjZhZjBjNGU4
NTYxNjU2YjNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yVUkuaApAQCAtMzksMTEgKzM5LDE2IEBAIGNsYXNz
IEZsb2F0UmVjdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjsKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFJlbW90ZVdlYklu
c3BlY3RvclVJIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yVUk+
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudCB7CitjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JVSSBmaW5hbAorICAgIDog
cHVibGljIFJlZkNvdW50ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yVUk+CisgICAgLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVXZWJJbnNwZWN0b3JVST4g
Y3JlYXRlKFdlYlBhZ2UmKTsKKyAgICB+UmVtb3RlV2ViSW5zcGVjdG9yVUkoKTsKIAogICAgIC8v
IEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNl
aXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIG92ZXJyaWRlOwpAQCAtOTcsNiArMTAyLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2hvd0NlcnRpZmljYXRlKGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyJiBmcm9udGVu
ZEFQSURpc3BhdGNoZXIoKSBvdmVycmlkZSB7IHJldHVybiBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hl
cjsgfQorICAgIFdlYkNvcmU6OlBhZ2UqIGZyb250ZW5kUGFnZSgpIGZpbmFsOwogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUl9URUxFTUVUUlkpCiAgICAgYm9vbCBzdXBwb3J0c0RpYWdub3N0aWNMb2dn
aW5nKCkgb3ZlcnJpZGU7CkBAIC0xMTcsNiArMTIzLDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUGFn
ZSYgbV9wYWdlOwogICAgIFJlZjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNo
ZXI+IG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZEhvc3Q+IG1fZnJvbnRlbmRIb3N0OworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyPiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKKwogICAgIERlYnVnZ2FibGVJ
bmZvRGF0YSBtX2RlYnVnZ2FibGVJbmZvOwogICAgIFN0cmluZyBtX2JhY2tlbmRDb21tYW5kc1VS
TDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJLmNwcAppbmRleCA4MjgwOWFkYjZkZWU2YTU1YmI5NTI2NzgzNTEzOGFjMjM2Nzk1
ZTVkLi5jMmQ4ODM2YWMyMjAwOTFhNWNlZjVjNjdjMjY3ZWUyODBkMjdhNTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNw
cApAQCAtMzYsMTAgKzM2LDE1IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yQ29udHJvbGxlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNpbmNsdWRlICJXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC02NSw2ICs3MCw4IEBAIFdlYklu
c3BlY3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlJiBwYWdlKQogICAgIFdlYkluc3BlY3Rv
clVJOjplbmFibGVGcm9udGVuZEZlYXR1cmVzKCk7CiB9CiAKK1dlYkluc3BlY3RvclVJOjp+V2Vi
SW5zcGVjdG9yVUkoKSA9IGRlZmF1bHQ7CisKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlz
aENvbm5lY3Rpb24oV2ViUGFnZVByb3h5SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmll
ciwgY29uc3QgRGVidWdnYWJsZUluZm9EYXRhJiBkZWJ1Z2dhYmxlSW5mbywgYm9vbCB1bmRlclRl
c3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKIHsKICAgICBtX2luc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyID0gaW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CkBAIC03Miw4ICs3OSwxMSBAQCB2b2lk
IFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgaW5zcGVjdGVkUGFnZUlkZQogICAgIG1fdW5kZXJUZXN0ID0gdW5kZXJUZXN0OwogICAgIG1f
aW5zcGVjdGlvbkxldmVsID0gaW5zcGVjdGlvbkxldmVsOwogCi0gICAgbV9mcm9udGVuZEFQSURp
c3BhdGNoZXItPnJlc2V0KCk7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAg
IG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyPigqdGhpcyk7CisjZW5kaWYKIAorICAgIG1fZnJvbnRlbmRBUElEaXNwYXRj
aGVyLT5yZXNldCgpOwogICAgIG1fZnJvbnRlbmRDb250cm9sbGVyID0gJm1fcGFnZS5jb3JlUGFn
ZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgbV9mcm9udGVuZENvbnRyb2xsZXItPnNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KHRoaXMpOwogCkBAIC0xNjUsNiArMTc1LDEwIEBAIHZv
aWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKIAogICAgIG1faW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIgPSB7IH07CiAgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKKyAgICAKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbnVs
bHB0cjsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpyZW9wZW4oKQpAQCAtNDEy
LDYgKzQyNiwxMiBAQCBTdHJpbmcgV2ViSW5zcGVjdG9yVUk6OnRhcmdldFByb2R1Y3RWZXJzaW9u
KCkgY29uc3QKICAgICByZXR1cm4gbV9kZWJ1Z2dhYmxlSW5mby50YXJnZXRQcm9kdWN0VmVyc2lv
bjsKIH0KIAorV2ViQ29yZTo6UGFnZSogV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kUGFnZSgpCit7
CisgICAgcmV0dXJuIG1fcGFnZS5jb3JlUGFnZSgpOworfQorCisKICNpZiAhUExBVEZPUk0oTUFD
KSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oV0lOKQogYm9vbCBXZWJJbnNwZWN0b3JV
STo6Y2FuU2F2ZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJLmgKaW5kZXggYTZlZTcxMzM5MzllZjJhMDRiNmI4NjJiMjhlODIx
N2ZlMjBkYjFlZS4uMjRjMWFiNDY5ZTgwZDViMzc3YjA2MDlmNzA1ZmRlNmZlMGU5ZDIwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUkuaApAQCAtMzEsMTAgKzMxLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JEZWJ1
Z2dhYmxlVHlwZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CitjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBGbG9hdFJlY3Q7CiB9CkBA
IC00MiwxMCArNDIsMTcgQEAgY2xhc3MgRmxvYXRSZWN0OwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYlBhZ2U7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3Mg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOworI2VuZGlmCiAKLWNsYXNzIFdlYklu
c3BlY3RvclVJIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViSW5zcGVjdG9yVUk+LCBwcml2YXRlIElQ
Qzo6Q29ubmVjdGlvbjo6Q2xpZW50LCBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQgeworY2xhc3MgV2ViSW5zcGVjdG9yVUkgZmluYWwKKyAgICA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYkluc3BlY3RvclVJPgorICAgICwgcHJpdmF0ZSBJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dAorICAgICwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFdlYkluc3BlY3RvclVJPiBjcmVhdGUoV2ViUGFnZSYpOworICAg
IHZpcnR1YWwgfldlYkluc3BlY3RvclVJKCk7CiAKICAgICBzdGF0aWMgdm9pZCBlbmFibGVGcm9u
dGVuZEZlYXR1cmVzKCk7CiAKQEAgLTE0Myw3ICsxNTAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogICAgIFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciYgZnJvbnRlbmRBUElEaXNwYXRjaGVy
KCkgZmluYWwgeyByZXR1cm4gbV9mcm9udGVuZEFQSURpc3BhdGNoZXI7IH0KLQorICAgIFdlYkNv
cmU6OlBhZ2UqIGZyb250ZW5kUGFnZSgpIGZpbmFsOworICAgICAgICAKICAgICB2b2lkIHBhZ2VQ
YXVzZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHBhZ2VVbnBhdXNlZCgpIG92ZXJyaWRlOwogCkBA
IC0xNjAsNiArMTY4LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gY29yZVBhZ2UoKSwgc2luY2Ugd2Ug
bWF5IG5lZWQgaXQgYWZ0ZXIgdGhlIGZyb250ZW5kJ3MgcGFnZSBoYXMgc3RhcnRlZCBkZXN0cnVj
dGlvbi4KICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBtX2Zyb250ZW5kQ29udHJv
bGxlciB7IG51bGxwdHIgfTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyPiBtX2V4
dGVuc2lvbkNvbnRyb2xsZXI7CisjZW5kaWYKKwogICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBib29sIG1fdW5kZXJUZXN0IHsgZmFsc2Ug
fTsKICAgICBEZWJ1Z2dhYmxlSW5mb0RhdGEgbV9kZWJ1Z2dhYmxlSW5mbzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTIyMzcyZDc5
N2YxMjVlZGJiYmYxMmE4MWUyNzU3YmEzMjBlMDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIuY3BwCkBAIC0wLDAgKzEsMTM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIgorCisj
aWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
VUkuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2Vz
UmVwbGllcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50JiBpbnNwZWN0b3JGcm9udGVuZCkKKyAgICA6IG1fZnJvbnRlbmRDbGllbnQobWFr
ZVdlYWtQdHIoaW5zcGVjdG9yRnJvbnRlbmQpKQoreworICAgIFBhZ2UqIHBhZ2UgPSBpbnNwZWN0
b3JGcm9udGVuZC5mcm9udGVuZFBhZ2UoKTsKKyAgICBBU1NFUlQocGFnZSk7CisKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBXZWJQYWdl
Ojpmcm9tQ29yZVBhZ2UoKnBhZ2UpLmlkZW50aWZpZXIoKSwgKnRoaXMpOworfQorCitXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXIoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcigqdGhpcyk7Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckV4dGVuc2lvbkVycm9yPiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3JGcm9tUmVzdWx0KEpTQzo6SlNWYWx1ZSByZXN1bHQpCit7CisgICAgQVNTRVJUKG1fZnJvbnRl
bmRDbGllbnQpOworICAgIGF1dG8gZ2xvYmFsT2JqZWN0ID0gbV9mcm9udGVuZENsaWVudC0+ZnJv
bnRlbmRBUElEaXNwYXRjaGVyKCkuZnJvbnRlbmRHbG9iYWxPYmplY3QoKTsKKyAgICBpZiAoIWds
b2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpDb250
ZXh0RGVzdHJveWVkOworCisgICAgLy8gSWYgdGhlIGV2YWx1YXRpb24gcmVzdWx0IGlzIGEgc3Ry
aW5nLCB0aGUgZnJvbnRlbmQgcmV0dXJuZWQgYW4gZXJyb3Igc3RyaW5nLgorICAgIC8vIEFueXRo
aW5nIGVsc2UgKGZhbHN5IHZhbHVlcywgb2JqZWN0cywgYXJyYXlzLCBET00sIGV0Yy4pIGlzIGlu
dGVycHJldGVkIGFzIHN1Y2Nlc3MuCisgICAgaWYgKHJlc3VsdC5pc1N0cmluZygpKSB7CisgICAg
ICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gcmVzdWx0LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7
CisgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkNvbnRleHREZXN0cm95ZWQiX3MpCisgICAg
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7
CisgICAgICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkludGVybmFsRXJyb3IiX3MpCisgICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludGVybmFsRXJyb3I7CisgICAg
ICAgIGlmIChyZXN1bHRTdHJpbmcgPT0gIkludmFsaWRSZXF1ZXN0Il9zKQorICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdDsKKyAgICAgICAg
aWYgKHJlc3VsdFN0cmluZyA9PSAiUmVnaXN0cmF0aW9uRmFpbGVkIl9zKQorICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQ7CisKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjsKKyAgICB9CisKKyAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworfQorCisvLyBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgSVBDIG1lc3Nh
Z2VzLgorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVnaXN0ZXJF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25JRCwgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRl
bnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9mcm9udGVu
ZENsaWVudCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcjo6SW52YWxpZFJlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFZlY3RvcjxSZWY8SlNPTjo6VmFsdWU+PiBhcmd1bWVudHMgeworICAgICAg
ICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGV4dGVuc2lvbklEKSwKKyAgICAgICAgSlNPTjo6VmFsdWU6
OmNyZWF0ZShkaXNwbGF5TmFtZSksCisgICAgfTsKKyAgICBtX2Zyb250ZW5kQ2xpZW50LT5mcm9u
dGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMoInJlZ2lz
dGVyRXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1
bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yRnJvbVJlc3VsdChyZXN1bHQudmFsdWUoKSkpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKHBhcnNlZEVycm9yLnZhbHVlKCkp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHRydWUpOworICAgIH0pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlcjo6dW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kQ2xp
ZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+IGFyZ3VtZW50cyB7IEpTT046OlZhbHVl
OjpjcmVhdGUoZXh0ZW5zaW9uSUQpIH07CisgICAgbV9mcm9udGVuZENsaWVudC0+ZnJvbnRlbmRB
UElEaXNwYXRjaGVyKCkuZGlzcGF0Y2hDb21tYW5kV2l0aFJlc3VsdEFzeW5jKCJ1bnJlZ2lzdGVy
RXh0ZW5zaW9uIl9zLCBXVEZNb3ZlKGFyZ3VtZW50cyksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShJ
bnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OkV2YWx1YXRpb25SZXN1bHQmJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFyZXN1bHQpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVy
cm9yOjpDb250ZXh0RGVzdHJveWVkKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoYXV0byBwYXJzZWRFcnJvciA9IHdlYWtUaGlzLT5wYXJzZUluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yRnJvbVJlc3VsdChyZXN1bHQudmFsdWUoKSkpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKHBhcnNlZEVycm9yLnZhbHVlKCkpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRydWUpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1YjQwYWIzOTNhMDUxZmIyNTIwNTA3ZTM1
YmJkY2RlYWUxNTg1NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oCkBAIC0wLDAg
KzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JFeHRlbnNpb25UeXBlcy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBK
U0MgeworY2xhc3MgSlNWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJJbnNwZWN0b3JVSTsKKworY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
CisgICAgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCYp
OworICAgIH5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoKTsKKworICAgIC8vIElt
cGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKworICAgIC8vIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlciBJUEMgbWVzc2FnZXMuCisgICAgdm9pZCByZWdpc3RlckV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yPik+JiYpOworICAgIHZvaWQgdW5yZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcm
IGV4dGVuc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yPik+JiYpOworCitwcml2YXRlOgorICAgIE9wdGlvbmFsPEluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yPiBwYXJzZUluc3BlY3RvckV4dGVuc2lvbkVycm9yRnJvbVJlc3Vs
dChKU0M6OkpTVmFsdWUgcmVzdWx0KTsKKworICAgIFdlYWtQdHI8V2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ+IG1fZnJvbnRlbmRDbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmM3OGVkNzVjY2MzYTk3NmVmZTc2MGNjYmY4ZDhjNjEwNDU0NjVjNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzAgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShJTlNQRUNU
T1JfRVhURU5TSU9OUykKKworbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyIE5vdFJlZkNvdW50ZWQgeworICAgIFJlZ2lzdGVyRXh0ZW5zaW9uKFN0cmluZyBleHRl
bnNpb25JRCwgU3RyaW5nIGRpc3BsYXlOYW1lKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYworICAgIFVucmVnaXN0ZXJFeHRl
bnNpb24oU3RyaW5nIGV4dGVuc2lvbklEKSAtPiAoRXhwZWN0ZWQ8Ym9vbCwgV2ViS2l0OjpJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBBc3luYworfQorCisjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDEwMWU2MmYxOTc3ZDkwNzM2NTc2MGExZThiNGFhYzE4NzkwYjdl
YWMuLjQ1NzFhZjcwZjZlYWJmMjIzNTMyOTI3MDg4MzQ4MGUxYzY5ZjQ4YTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAyMC0xMS0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIEluc3BlY3RvciBFeHRlbnNpb25zOiBBZGQgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFuZCBy
ZWxhdGVkIHBsdW1iaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTc3ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5OTY4Nzg3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICBBZGQgQVBJIHRlc3RzIHRv
IGV4ZXJjaXNlIG5ldyBtZXRob2RzIG9mIHRoZSBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IHBy
b3RvY29sLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IE5ldyB0ZXN0IGZpbGUuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW06IEFkZGVkLgor
ICAgICAgICAocmVzZXRHbG9iYWxTdGF0ZSk6CisgICAgICAgICgtW1VJRGVsZWdhdGVGb3JUZXN0
aW5nSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3Rv
cjpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTExLTA1ICBBYWthc2ggSmFpbiAgPGFha2Fz
aF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbYnVpbGQud2Via2l0Lm9yZ10gUmVuYW1lIEJV
SUxEX1dFQktJVF9VUkwgdG8gQ1VSUkVOVF9IT1NUTkFNRQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyNmU0Yjc5Zjc2NjMxYzkzYzgwNzlkYzU1NjcyZjZiOWM3YTdkOWE4Li5iMTFmZGMyN2E3
ZmY1NTI3Mjg3M2M3NWVlYjc5OWQzOTNjMDEwMWMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtODM1LDYgKzgzNSw3IEBACiAJCTk5ODRGQUNDMUNGRkFGNjAwMDhEMTk4QyAvKiBXS1dlYlZp
ZXdUZXh0SW5wdXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTg0RkFDQTFDRkZBRUVFMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tICov
OyB9OwogCQk5OTg0RkFDRTFDRkZCMDkwMDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5ODRG
QUNEMUNGRkIwMzgwMDhEMTk4QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi87IH07CiAJCTk5OTkx
MDhCMUYzOTNDOTYwMDhBRDQ1NSAvKiBDb3B5aW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk5OTEwOEExRjM5M0M4QjAwOEFENDU1IC8qIENvcHlp
bmcubW0gKi87IH07CisJCTk5OUI3RUUzMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4
dGVuc2lvbkhvc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTlCN0VFMjI1NTFDNjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0
Lm1tICovOyB9OwogCQk5OUI0RjlDNjI0RURFRDk3MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
QjRGOUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tICovOyB9Owog
CQk5QjAyRTBENjIzNUZBNDdEMDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDJFMEQ1MjM1RkE0N0Qw
MDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0aW9uLm1tICovOyB9OwogCQk5QjA3ODZBNTFDNTg4NUMz
MDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjA3ODZB
NDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVu
X0J1bmRsZS5jcHAgKi87IH07CkBAIC0yNDQ2LDYgKzI0NDcsNyBAQAogCQk5OTg0RkFDQTFDRkZB
RUVFMDA4RDE5OEMgLyogV0tXZWJWaWV3VGV4dElucHV0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3VGV4dElucHV0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFibGUtYm9k
eS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImVkaXRhYmxlLWJvZHkuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OTkxMDhBMUYzOTNDOEIwMDhBRDQ1NSAv
KiBDb3B5aW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29w
eWluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk5QjdFRTIyNTUxQzYzQjAw
RjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlCNEY5QzUyNEVERUQ5NjAwMDIyQjgyIC8qIFdLSW5z
cGVjdG9yRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS0luc3BlY3RvckRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QjAyRTBENTIzNUZBNDdEMDA0MDQ0QjIgLyogVGV4dE1hbmlwdWxhdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFRleHRNYW5pcHVsYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMDc4NkEyMUM1ODgzMEYwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxT
aGFkb3dSb290c09wZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM0MDksNiArMzQxMSw3IEBACiAJCQkJMzcwQ0UyMjkxRjU3MzQzNDAw
RTc0MTBCIC8qIFdLQ29udGVudFZpZXdUYXJnZXRGb3JBY3Rpb24ubW0gKi8sCiAJCQkJNTFEMTI0
OTcxRTc2M0FGODAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLm1tICovLAogCQkJCTk5QjRG
OUM1MjRFREVEOTYwMDAyMkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tICovLAorCQkJCTk5
OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0gKi8s
CiAJCQkJQTVBNzI5RjAxRjYyMkE5QTAwREU1QTI4IC8qIFdLTmF2aWdhdGlvblJlc3BvbnNlLm1t
ICovLAogCQkJCURGNEIyNzM4MjFBNDc3MjcwMDlCRDFDQSAvKiBXS05TRGljdGlvbmFyeUVtcHR5
RGljdGlvbmFyeUNyYXNoLm1tICovLAogCQkJCTM3NUUwRTE1MUQ2NjY3NDQwMEVGRUMyQyAvKiBX
S05TTnVtYmVyLm1tICovLApAQCAtNTU0Miw2ICs1NTQ1LDcgQEAKIAkJCQk1MUQxMjQ5ODFFNzYz
QjAyMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0YxRDFBNDExQUU2MDA0NDdDNEMgLyogV0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5OUI0RjlDNjI0RURFRDk3MDAwMjJCODIgLyogV0tJbnNwZWN0
b3JEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTk5OUI3RUUzMjU1MUM2M0IwMEY0NTBB
NCAvKiBXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNUE3
MjlGMTFGNjIyQUE3MDBERTVBMjggLyogV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0gaW4gU291cmNl
cyAqLywKIAkJCQlERjRCMjczOTIxQTQ3NzI4MDA5QkQxQ0EgLyogV0tOU0RpY3Rpb25hcnlFbXB0
eURpY3Rpb25hcnlDcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3NUUwRTE3MUQ2NjY3NDQw
MEVGRUMyQyAvKiBXS05TTnVtYmVyLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9z
dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JF
eHRlbnNpb25Ib3N0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlZGFjZDc5Y2RhZDc3OGY5MzRhMDljZDg5NDUw
NGRlZGFkY2E2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbQpAQCAtMCwwICsxLDE3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJUZXN0LmgiCisj
aW1wb3J0ICJVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9fV0tJbnNwZWN0b3IuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JQcml2YXRlRm9y
VGVzdGluZy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorCitzdGF0aWMgYm9vbCBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNh
bGxlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFs
c2U7CisKK3N0YXRpYyB2b2lkIHJlc2V0R2xvYmFsU3RhdGUoKQoreworICAgIGRpZEF0dGFjaExv
Y2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVk
ID0gZmFsc2U7Cit9CisKK0BpbnRlcmZhY2UgVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JF
eHRlbnNpb25Ib3N0IDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFVJRGVsZWdhdGVGb3JUZXN0aW5nSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdAorCistICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9y
OihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBFWFBFQ1RfRVEod2ViVmlldy5faW5z
cGVjdG9yLCBpbnNwZWN0b3IpOworICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0g
dHJ1ZTsKK30KKworQGVuZAorCitURVNUKFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCwgUmVnaXN0
ZXJFeHRlbnNpb24pCit7CisgICAgcmVzZXRHbG9iYWxTdGF0ZSgpOworCisgICAgYXV0byB3ZWJW
aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7
CisgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4
dHJhc0VuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB1aURlbGVnYXRl
ID0gYWRvcHROUyhbVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IG5l
d10pOworCisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKyAg
ICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8gYmUg
aW5zcGVjdGVkPC90aXRsZT48L2hlYWQ+PGJvZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9ib2R5
PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07
CisKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd107CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CisKKyAgICBhdXRvIGZp
cnN0SUQgPSBbTlNVVUlEIFVVSURdLlVVSURTdHJpbmc7CisgICAgYXV0byBzZWNvbmRJRCA9IFtO
U1VVSUQgVVVJRF0uVVVJRFN0cmluZzsKKworICAgIC8vIE5vcm1hbCByZWdpc3RyYXRpb24uCisg
ICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNw
ZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmZpcnN0SUQgZGlzcGxheU5hbWU6QCJGaXJz
dEV4dGVuc2lvbiIgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9y
LCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgICAg
IEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7
CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisK
KyAgICAvLyBEb3VibGUgcmVnaXN0cmF0aW9uLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxl
ZCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVuc2lvbldp
dGhJRDpmaXJzdElEIGRpc3BsYXlOYW1lOkAiRmlyc3RFeHRlbnNpb24iIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICog
X051bGxhYmxlIGV4dGVuc2lvbikgeworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXJyb3IpOwor
ICAgICAgICBFWFBFQ1RfTlVMTChleHRlbnNpb24pOworICAgICAgICBFWFBFQ1RfVFJVRShbZXJy
b3IubG9jYWxpemVkRmFpbHVyZVJlYXNvbiBjb250YWluc1N0cmluZzpAIlJlZ2lzdHJhdGlvbkZh
aWxlZCJdKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2Fs
bGVkKTsKKworICAgIC8vIFR3byByZWdpc3RyYXRpb25zLgorICAgIHBlbmRpbmdDYWxsYmFja1dh
c0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSByZWdpc3RlckV4dGVu
c2lvbldpdGhJRDpzZWNvbmRJRCBkaXNwbGF5TmFtZTpAIlNlY29uZEV4dGVuc2lvbiIgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRl
bnNpb24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9y
KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7CisKKyAgICAgICAgcGVuZGlu
Z0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7Cit9CisKK1RFU1QoV0tJbnNwZWN0
b3JFeHRlbnNpb25Ib3N0LCBVbnJlZ2lzdGVyRXh0ZW5zaW9uKQoreworICAgIHJlc2V0R2xvYmFs
U3RhdGUoKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgp
LnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGVGb3JUZXN0aW5n
SW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBuZXddKTsKKworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdh
dGU6dWlEZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8aGVh
ZD48dGl0bGU+VGVzdCBwYWdlIHRvIGJlIGluc3BlY3RlZDwvdGl0bGU+PC9oZWFkPjxib2R5Pjxw
PkZpbGxlciBjb250ZW50PC9wPjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vZXhhbXBsZS5jb20vIl1dOworCisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNo
b3ddOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQXR0YWNoTG9jYWxJbnNwZWN0
b3JDYWxsZWQpOworCisgICAgYXV0byBmaXJzdElEID0gW05TVVVJRCBVVUlEXS5VVUlEU3RyaW5n
OworICAgIF9fYmxvY2sgUmV0YWluUHRyPF9XS0luc3BlY3RvckV4dGVuc2lvbj4gZm91bmRFeHRl
bnNpb247CisKKyAgICAvLyBVbnJlZ2lzdGVyIGEga25vd24gZXh0ZW5zaW9uLgorICAgIHBlbmRp
bmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBy
ZWdpc3RlckV4dGVuc2lvbldpdGhJRDpmaXJzdElEIGRpc3BsYXlOYW1lOkAiRmlyc3RFeHRlbnNp
b24iIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uICogX051bGxhYmxlIGV4dGVuc2lvbikgeworICAgICAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChleHRlbnNpb24pOworICAgICAg
ICBmb3VuZEV4dGVuc2lvbiA9IGV4dGVuc2lvbjsKKworICAgICAgICBbW3dlYlZpZXcgX2luc3Bl
Y3Rvcl0gdW5yZWdpc3RlckV4dGVuc2lvbjpmb3VuZEV4dGVuc2lvbi5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKworICAgICAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0g
dHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworICAgIEVYUEVDVF9OT1RfTlVMTChmb3VuZEV4
dGVuc2lvbi5nZXQoKSk7CisKKyAgICAvLyBSZS1yZWdpc3RlciBhbiBleHRlbnNpb24uCisgICAg
cGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0
b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmZpcnN0SUQgZGlzcGxheU5hbWU6QCJGaXJzdEV4
dGVuc2lvbiIgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4dGVuc2lvbik7Cisg
ICAgICAgIGZvdW5kRXh0ZW5zaW9uID0gZXh0ZW5zaW9uOworCisgICAgICAgIFtbd2ViVmlldyBf
aW5zcGVjdG9yXSB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmZvdW5kRXh0ZW5zaW9uLmdldCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICAgICAg
RVhQRUNUX05VTEwoZXJyb3IpOworCisgICAgICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxs
ZWQgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisgICAgRVhQRUNUX05PVF9OVUxMKGZv
dW5kRXh0ZW5zaW9uLmdldCgpKTsKKworICAgIC8vIFVucmVnaXN0ZXIgYW4gZXh0ZW5zaW9uIHR3
aWNlLgorICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmll
dyBfaW5zcGVjdG9yXSB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmZvdW5kRXh0ZW5zaW9uLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBF
WFBFQ1RfTk9UX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbZXJyb3IubG9jYWxp
emVkRmFpbHVyZVJlYXNvbiBjb250YWluc1N0cmluZzpAIkludmFsaWRSZXF1ZXN0Il0pOworCisg
ICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413849</attachid>
            <date>2020-11-11 12:09:41 -0800</date>
            <delta_ts>2020-11-11 13:45:02 -0800</delta_ts>
            <desc>Patch v2.5 - for EWS</desc>
            <filename>bug-217783-20201111120941.patch</filename>
            <type>text/plain</type>
            <size>118957</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBhOWM5NmNhOTViYTFk
MWUwZmQ1NWZmMzYxYTJhYjhiMzk5ZDM5Mi4uZDIxODcyMDQ1YjNkNGNjM2FkMGQ5ZWFhNWZkOGQw
Yjk2MjRhZTdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTExLTExICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4
dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4Mwor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGV2aW4gUm91c3NvLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aDoKKyAgICAgICAgSW4gb3JkZXIgZm9yIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
ciB0byB3b3JrIHdpdGggcmVtb3RlIGFuZCBsb2NhbAorICAgICAgICBpbnNwZWN0b3JzLCBpdCBz
dG9yZXMgYSB3ZWFrIHBvaW50ZXIgdGhlIGluc3BlY3RvcidzIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50LgorICAgICAgICBFeHBvc2UgdGhlIGZyb250ZW5kJ3MgcGFnZSBzbyB0aGF0IHRoZSBmcm9u
dGVuZCBBUEkgZGlzcGF0Y2hlciBjYW4gZGlzcGF0Y2ggdG8gaXQuCisKIDIwMjAtMTEtMTEgIE5v
YW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3JnPgogCiAgICAgICAgIENvbnRlbnRmdWxQYWlu
dENoZWNrZXIgc2hvdWxkIG5vdCB0cmlnZ2VyIHBsdWdpbiBzbmFwc2hvdHRpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCmluZGV4IDhjNjFkYmU2MGViOTcwNTU5Mjk3ZGExNDVhMzllODMwOWMzZDNh
MjQuLjgzYTNjMmQxYTY2YzJhMWZhNGM1YTBkNGJhMGZiOWE5YTdhNDg1YTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTExLTExICBCcmlhbiBCdXJnICA8
YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4dGVuc2lvbnM6
IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4MworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91
c3NvLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6IEFkZCBuZXcgZmlsZXMu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0FwcENvbnRyb2xsZXJCYXNl
LmpzOgorICAgICAgICAoV0kuQXBwQ29udHJvbGxlckJhc2UpOgorICAgICAgICAoV0kuQXBwQ29u
dHJvbGxlckJhc2UucHJvdG90eXBlLmdldCBleHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAg
SGFuZyB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xsZXIgb2ZmIG9mIHRoZSBnbG9iYWwgc2luZ2xldG9u
LCBhcyB0aGVyZSBjYW4gb25seSBiZSBvbmUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1dlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIuanM6CisgICAgICAgIChX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyKToKKyAgICAgICAgKFdJLldlYkluc3Bl
Y3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlZ2lzdGVyRXh0ZW5zaW9uKToKKyAg
ICAgICAgKFdJLldlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIucHJvdG90eXBlLnVucmVn
aXN0ZXJFeHRlbnNpb24pOgorICAgICAgICBBZGRlZC4gRm9yIG5vdywganVzdCBrZWVwIHRoZSBV
VUlEcyBpbiBhIG1hcCBhbmQgbG9nIHRoZSByZXN1bHQuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanM6CisgICAgICAgIChXSS5XZWJJbnNw
ZWN0b3JFeHRlbnNpb24pOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLnByb3Rv
dHlwZS5nZXQgZXh0ZW5zaW9uSUQpOgorICAgICAgICAoV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
LnByb3RvdHlwZS5nZXQgZGlzcGxheU5hbWUpOgorICAgICAgICBBZGRlZC4gVGhpcyBpcyBhIGRh
dGEgb2JqZWN0IGZvciBub3cuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0lu
c3BlY3RvckZyb250ZW5kQVBJLmpzOgorICAgICAgICAoSW5zcGVjdG9yRnJvbnRlbmRBUEkubG9h
ZENvbXBsZXRlZCk6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS5yZWdpc3RlckV4dGVu
c2lvbik6CisgICAgICAgIChJbnNwZWN0b3JGcm9udGVuZEFQSS51bnJlZ2lzdGVyRXh0ZW5zaW9u
KToKKyAgICAgICAgQWRkZWQuIEZvcndhcmQgaW52b2NhdGlvbnMgdG8gdGhlIGV4dGVuc2lvbiBj
b250cm9sbGVyLgorCiAyMDIwLTExLTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2OTY2MC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYzRhMDAwOTY4MDYzODJmY2FjYmM2NDBmZDIzYjVkNThkOTkxZGJjOC4uMzZlOTFhMmY5
YjM3ZjYzZjMxYTVhNDM2OWFjNGJiMWI0MzAzMzY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzIg
QEAKKzIwMjAtMTEtMTEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
W0NvY29hXSBJbnNwZWN0b3IgRXh0ZW5zaW9uczogQWRkIF9XS0luc3BlY3RvckV4dGVuc2lvbiBh
bmQgcmVsYXRlZCBwbHVtYmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE3NzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTk2ODc4Nz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uIGlzIG5ldyBTUEkgdGhhdCByZXByZXNlbnRzIGEgV2ViIEV4dGVuc2lvbiB0aGF0
IHVzZXMgdGhlICdkZXZ0b29scycKKyAgICAgICAgQVBJIHRvIGludGVyYWN0IHdpdGggV2ViIElu
c3BlY3Rvci4gQW4gZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQgd2l0aCBpdHMgX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSG9zdC4KKyAgICAgICAgQSBXZWJLaXQgY2xpZW50IHRoYXQgc3VwcG9ydHMgV2Vi
IEV4dGVuc2lvbnMgY2FuIHVzZSB0aGlzIGNsYXNzIHRvIGltcGxlbWVudCAnZGV2dG9vbHMnIGV4
dGVuc2lvbiBBUElzLgorCisgICAgICAgIEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IG1l
dGhvZHMgdG8gcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgYW4gZXh0ZW5zaW9uLgorICAgICAgICBB
ZGQgcGx1bWJpbmcgc28gdGhhdCB0aGUgZXh0ZW5zaW9uIGluIHJlZ2lzdGVyZWQgaW4gdGhlIGZy
b250ZW5kIHdpdGggV0kuSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci4KKworICAgICAgICBM
YXRlciBwYXRjaGVzIHdpbGwgZmxlc2ggb3V0IHRoZSBuZWVkZWQgZnVuY3Rpb25hbGl0eSB0byBp
bXBsZW1lbnQgcmVzdCBvZiB0aGUgJ2RldnRvb2xzJyBBUEkuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKwor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OiBJZiBhIG1lc3NhZ2UgaW5jbHVk
ZXMgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIHRoZW4gZ2VuZXJhdGUgYW4gaW5j
bHVkZSBmb3IgSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCB3aGVyZSBpdCBpcyBkZWNsYXJlZC4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICBOZXcgQVBJIG9iamVjdCB0eXBlLgorCisgICAgICAgICogU2hhcmVkL0luc3BlY3RvckV4
dGVuc2lvblR5cGVzLmg6IEFkZGVkIGVycm9yIGNvZGUgZW51bSBhbmQgdXNlZnVsIHR5cGUgYWxp
YXNlcy4KKyAgICAgICAgKiBTaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjppbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKToKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwOgorICAgICAgICAoQVBJOjpJbnNw
ZWN0b3JFeHRlbnNpb246OmNyZWF0ZSk6CisgICAgICAgIChBUEk6Okluc3BlY3RvckV4dGVuc2lv
bjo6SW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9u
Ojp+SW5zcGVjdG9yRXh0ZW5zaW9uKToKKyAgICAgICAgQWRkZWQuIFRoaXMgaXMgYSBwbGFjZWhv
bGRlciBvYmplY3QgdGhhdCdzIHVzZWQgZm9yIHRoZSB3cmFwcGVyIHN5c3RlbSwKKyAgICAgICAg
c2luY2Ugd2UgZG9uJ3QgaGF2ZSBzaW5nbGUgQysrIG9iamVjdHMgZm9yIGVhY2ggZXh0ZW5zaW9u
IHRvIGJhY2sgdGhlIEFQSSBvYmplY3QuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3Rvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6
ZGlzcGxheU5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3Rv
ciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICBJbXBs
ZW1lbnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9kcy4gU2VuZCBJUEMgdG8g
dGhlIEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW06CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVu
c2lvbiBpbml0V2l0aElkZW50aWZpZXI6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVu
c2lvbiBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBfYXBpT2Jq
ZWN0XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckV4dGVuc2lvbiBleHRlbnNpb25JRF0pOgor
ICAgICAgICBBZGRlZC4gVGhpcyBpcyBhIGRhdGEgb2JqZWN0IHRoYXQncyBhbHNvIHVzZWQgYXMg
YSB0b2tlbiB0byB1bnJlZ2lzdGVyIHRoZSBleHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaDogQWRkIG5ldyBTUEkuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5h
bC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdl
Ykluc3BlY3RvclZpZXdDb250cm9sbGVyIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmRpc3BsYXlO
YW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlciB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICBJbXBsZW1lbnQgbmV3IF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QgbWV0aG9k
cy4gU2VuZCBJUEMgdG8gdGhlIEluc3BlY3RvciB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluOiBB
ZGQgRnJvbnRlbmRMb2FkZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpleHRlbnNpb25Db250cm9sbGVyIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3cpOgorICAgICAgICBTZXQgdXAgdGhlIGV4dGVuc2lvbiBjb250cm9sbGVyIG9iamVjdCBhZnRl
ciB0aGUgZnJvbnRlbmQgaGFzIGJlZW4gY3JlYXRlZC4KKyAgICAgICAgSG9vayB1cCB0aGUgRnJv
bnRlbmRMb2FkZWQgZXZlbnQgc2VudCBmcm9tIEluc3BlY3RvciB3ZWIgcHJvY2VzcyBzbyB0aGF0
IHRoZQorICAgICAgICBleHRlbnNpb24gY29udHJvbGxlciBjYW4gYmUgbm90aWZpZWQgb2Ygd2hl
biBpdCdzIHNhZmUgdG8gbWVzc2FnZSB0aGUgZnJvbnRlbmQuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIFNldCB1
cCB0aGUgZXh0ZW5zaW9uIGNvbnRyb2xsZXIgb2JqZWN0IGFmdGVyIHRoZSBmcm9udGVuZCBoYXMg
YmVlbiBjcmVhdGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6ZXh0ZW5zaW9u
Q29udHJvbGxlciBjb25zdCk6IEFkZGVkLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6On5X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp3aGVuRnJvbnRlbmRIYXNM
b2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6
dW5yZWdpc3RlckV4dGVuc2lvbik6CisgICAgICAgIEFkZGVkLiBGb3J3YXJkIEFQSSByZXF1ZXN0
cyB0byB0aGUgV2ViIEluc3BlY3RvcidzIHdlYiBwcm9jZXNzIHRvIGJlIGV2YWx1YXRlZCBpbiB0
aGUgZnJvbnRlbmQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI6OmRpc3BhdGNoQ29tbWFuZCk6Cisg
ICAgICAgIEFkZCBhIG1vcmUgZ2VuZXJpYyB3YXkgdG8gZW5jb2RlIHZhbHVlcyB0byBiZSBwYXNz
ZWQgYXMgYXJndW1lbnRzIHRvIEluc3BlY3RvckZyb250ZW5kQVBJLmRpc3BhdGNoLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUk6OmZyb250ZW5kUGFnZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSTo6ZnJvbnRlbmRBUElEaXNwYXRjaGVyKTogQWRkZWQuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXIubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlcjo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cmVn
aXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXI6OnVucmVnaXN0ZXJFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJy
b3JGcm9tUmVzdWx0KToKKyAgICAgICAgSGFuZGxlIGluY29taW5nIG1lc3NhZ2VzIGJ5IGZvcndh
cmRpbmcgdGhlIGFzc29jaWF0ZWQgY29tbWFuZCB0byBXSS5XZWJFeHRlbnNpb25Db250cm9sbGVy
CisgICAgICAgIHZpYSBJbnNwZWN0b3JGcm9udGVuZEFQSSBldmFsdWF0aW9ucy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICBGYWxsb3V0
IGZyb20gdW5pZmllZCBidWlsZCBjaHVua2luZyBzaGlmdHMuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tOgorICAgICAg
ICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDo6Z2V0RXhpc3RpbmdDcmVkZW50
aWFscyk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbik6CisgICAgICAgIEZhbGxvdXQgZnJvbSB1
bmlmaWVkIGJ1aWxkIGNodW5raW5nIHNoaWZ0cywgYnV0IG1vcmUuCisKIDIwMjAtMTEtMTEgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvbmN1cnJl
bnQgZGlzcGxheSBsaXN0c10gQWRkIGFuIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgY29uY3Vy
cmVudCBkaXNwbGF5IGxpc3QgcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCmluZGV4IDBhNzlkODZiM2M0Njk3NzgxNGE2
OGY0ZWFhZWRiOGE4ZWU5ZmZiYTMuLmU4ZDEzYTIxMWUwNjI2ZTA3NzQyNjQwOWFkZGFlMDU3YzU4
YTFiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oCkBAIC0zNiwxNCArMzYsMTYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1
Z2dhYmxlVHlwZS5oIgogI2luY2x1ZGUgIlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRmxvYXRSZWN0OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyOworY2xh
c3MgUGFnZTsKIAotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgeworY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERvY2tTaWRlIHsKICAgICAgICAg
VW5kb2NrZWQgPSAwLApAQCAtMTExLDYgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSA9
IDA7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3Bh
dGNoZXImIGZyb250ZW5kQVBJRGlzcGF0Y2hlcigpID0gMDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIFBhZ2UqIGZyb250ZW5kUGFnZSgpID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgYm9vbCBpc1VuZGVyVGVzdCgpID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCAxMTgx
YTIwOTZjMTc2MGRmMjI5MzI2MDEwNmM1ZDA5NWM0MWQzNDFhLi5hZDE4ZjYwODA1ZDFjZTE2ZTY5
NDJlZjMyNzAyOTk0ODQ1OWFlNzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAgLTk1LDcgKzk1LDggQEAg
cHVibGljOgogICAgIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNVUkwoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBTdHJpbmcoKTsgfTsKIAogICAgIEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciYg
ZnJvbnRlbmRBUElEaXNwYXRjaGVyKCkgZmluYWwgeyByZXR1cm4gbV9mcm9udGVuZEFQSURpc3Bh
dGNoZXI7IH0KLQorICAgIFBhZ2UqIGZyb250ZW5kUGFnZSgpIGZpbmFsIHsgcmV0dXJuIG1fZnJv
bnRlbmRQYWdlOyB9CisgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5BdHRhY2hXaW5k
b3coKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERvY2tpbmdVbmF2YWlsYWJsZShib29s
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvQXBwQ29udHJvbGxlckJhc2UuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qcwppbmRleCA2MWQ0YzQ1
OTQ0ZGI2Njk1NWQwMDA5NzNhM2U2ZGVhM2FlNjZlYTU2Li4wMDI1Mzc0Yjc4ZDcwYzA3ZmZmZDhi
YjNlNGFlMTJlMDM4OGViZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFzZS5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9BcHBDb250cm9sbGVyQmFz
ZS5qcwpAQCAtNDEsMTEgKzQxLDE0IEBAIFdJLkFwcENvbnRyb2xsZXJCYXNlID0gY2xhc3MgQXBw
Q29udHJvbGxlckJhc2UKICAgICBjb25zdHJ1Y3RvcigpCiAgICAgewogICAgICAgICB0aGlzLl9p
bml0aWFsaXplZCA9IGZhbHNlOworCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbkNvbnRyb2xsZXIg
PSBuZXcgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlcjsKICAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAogICAgIGdldCBkZWJ1Z2dhYmxlVHlwZSgpIHsgdGhyb3cgV0kuTm90SW1wbGVt
ZW50ZWRFcnJvci5zdWJjbGFzc011c3RPdmVycmlkZSgpOyB9CisgICAgZ2V0IGV4dGVuc2lvbkNv
bnRyb2xsZXIoKSB7IHJldHVybiB0aGlzLl9leHRlbnNpb25Db250cm9sbGVyOyB9CiAKICAgICAv
LyBTaW5jZSB2YXJpb3VzIG1lbWJlcnMgb2YgdGhlIGFwcCBjb250cm9sbGVyIGRlcGVuZCBvbiB0
aGUgZ2xvYmFsIHNpbmdsZXRvbiB0byBleGlzdCwKICAgICAvLyBzb21lIGluaXRpYWxpemF0aW9u
IG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgYXBwIGNvbnRyb2xsZXIgaGFzIGJlZW4gY29uc3Ry
dWN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5z
aW9uQ29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmUzOTZjMzQyNGY2MjQ3ZTAxYTBmYWY1MDlj
M2JiMjk3NzliMWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5q
cwpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
Q29udHJvbGxlciA9IGNsYXNzIFdlYkluc3BlY3RvckV4dGVuc2lvbkNvbnRyb2xsZXIgZXh0ZW5k
cyBXSS5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigp
OworCisgICAgICAgIHRoaXMuX2V4dGVuc2lvbklETWFwID0gbmV3IE1hcDsKKyAgICB9CisKKyAg
ICAvLyBQdWJsaWMKKworICAgIHJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBkaXNwbGF5
TmFtZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9leHRlbnNpb25JRE1hcC5oYXMoZXh0ZW5z
aW9uSUQpKSB7CisgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJVbmFibGUgdG8g
cmVnaXN0ZXIgZXh0ZW5zaW9uLCBpdCdzIGFscmVhZHkgcmVnaXN0ZXJlZDogIiwgZXh0ZW5zaW9u
SUQsIGRpc3BsYXlOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBXSS5XZWJJbnNwZWN0b3JFeHRl
bnNpb24uRXJyb3JDb2RlLlJlZ2lzdHJhdGlvbkZhaWxlZDsKKyAgICAgICAgfQorCisgICAgICAg
IGxldCBleHRlbnNpb24gPSBuZXcgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uKGV4dGVuc2lvbklE
LCBkaXNwbGF5TmFtZSk7CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbklETWFwLnNldChleHRlbnNp
b25JRCwgZXh0ZW5zaW9uKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb25Db250cm9sbGVyLkV2ZW50LkV4dGVuc2lvbkFkZGVk
LCB7ZXh0ZW5zaW9ufSk7CisgICAgfQorCisgICAgdW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNp
b25JRCkKKyAgICB7CisgICAgICAgIGxldCBleHRlbnNpb24gPSB0aGlzLl9leHRlbnNpb25JRE1h
cC50YWtlKGV4dGVuc2lvbklEKTsKKyAgICAgICAgaWYgKCFleHRlbnNpb24pIHsKKyAgICAgICAg
ICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVuYWJsZSB0byB1bnJlZ2lzdGVyIGV4dGVuc2lv
biB3aXRoIHVua25vd24gSUQ6ICIsIGV4dGVuc2lvbklEKTsKKyAgICAgICAgICAgIHJldHVybiBX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlLkludmFsaWRSZXF1ZXN0OworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVudC5FeHRlbnNpb25SZW1vdmVkLCB7ZXh0ZW5zaW9u
fSk7CisgICAgfQorfTsKKworV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5FdmVu
dCA9IHsKKyAgICBFeHRlbnNpb25BZGRlZDogImV4dGVuc2lvbi1hZGRlZCIsCisgICAgRXh0ZW5z
aW9uUmVtb3ZlZDogImV4dGVuc2lvbi1yZW1vdmVkIiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggZmFlM2NmODcyNmMwODc3NmVmMDMy
YTVmYTQ5YmI1MjZkZWM0NTBiOC4uYjg2ZGY1ZmYwNTllZWJmODBlMDMyNDlmOGYzMzhjNTk1YjNl
ZDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bApAQCAtNDg0LDYgKzQ4NCw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9UeXBlRGVzY3Jp
cHRpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVHlwZVNldC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9VUkxCcmVha3BvaW50LmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1dlYkluc3BlY3RvckV4dGVuc2lvbi5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XZWJTb2NrZXRSZXNvdXJjZS5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XcmFwcGVkUHJvbWlzZS5qcyI+PC9z
Y3JpcHQ+CiAKQEAgLTg5OCw2ICs4OTksNyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9UYXJnZXRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvVGltZWxpbmVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJv
bGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1dvcmtlck1hbmFnZXIuanMiPjwvc2NyaXB0
PgogCiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0RpYWdub3N0aWNDb250cm9sbGVyLmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9XZWJJbnNwZWN0b3JFeHRlbnNpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA2ZDllZGEyMzJiODM0OGEyYjk0OTY5NWIzZTY1MjA0YzQ2NTk3Y2EKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvV2ViSW5z
cGVjdG9yRXh0ZW5zaW9uLmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5XZWJJ
bnNwZWN0b3JFeHRlbnNpb24gPSBjbGFzcyBXZWJJbnNwZWN0b3JFeHRlbnNpb24KK3sKKyAgICBj
b25zdHJ1Y3RvcihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydCh0eXBlb2YgZXh0ZW5zaW9uSUQgPT09ICJzdHJpbmciLCBleHRlbnNpb25JRCk7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBkaXNwbGF5TmFtZSA9PT0gInN0cmluZyIs
IGRpc3BsYXlOYW1lKTsKKworICAgICAgICB0aGlzLl9leHRlbnNpb25JRCA9IGV4dGVuc2lvbklE
OworICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOworICAgIH0KKworICAg
IC8vIFB1YmxpYworCisgICAgZ2V0IGV4dGVuc2lvbklEKCkgeyByZXR1cm4gdGhpcy5fZXh0ZW5z
aW9uSUQ7IH0KKyAgICBnZXQgZGlzcGxheU5hbWUoKSB7IHJldHVybiB0aGlzLl9kaXNwbGF5TmFt
ZTsgfQorfTsKKworLy8gTm90ZTogdGhlc2UgdmFsdWVzIGFyZSBzeW5vbnltb3VzIHdpdGggdGhl
IHZhbHVlcyBvZiBlbnVtIGNsYXNzIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IuCitX
SS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlID0geworICAgIENvbnRleHREZXN0cm95
ZWQ6ICJDb250ZXh0RGVzdHJveWVkIiwKKyAgICBJbnRlcm5hbEVycm9yOiAiSW50ZXJuYWxFcnJv
ciIsCisgICAgSW52YWxpZFJlcXVlc3Q6ICJJbnZhbGlkUmVxdWVzdCIsCisgICAgUmVnaXN0cmF0
aW9uRmFpbGVkOiAiUmVnaXN0cmF0aW9uRmFpbGVkIiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JGcm9udGVuZEFQ
SS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3Bl
Y3RvckZyb250ZW5kQVBJLmpzCmluZGV4IDFkMWYyODhiYjgzNGQ0ODJmNjRlMzllZjBmYmQ1Mzg2
ZDg3NGRlZjAuLmY5ZDIwYWYxMWY0NmNjZGVkNjVkM2RjMWE5YjQ2ODNiZjRhZDZkOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3Bl
Y3RvckZyb250ZW5kQVBJLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0luc3BlY3RvckZyb250ZW5kQVBJLmpzCkBAIC0xOTYsNSArMTk2LDE3IEBA
IEluc3BlY3RvckZyb250ZW5kQVBJID0gewogICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRB
UEkuZGlzcGF0Y2goSW5zcGVjdG9yRnJvbnRlbmRBUEkuX3BlbmRpbmdDb21tYW5kc1tpXSk7CiAK
ICAgICAgICAgZGVsZXRlIEluc3BlY3RvckZyb250ZW5kQVBJLl9wZW5kaW5nQ29tbWFuZHM7Ci0g
ICAgfQorICAgIH0sCisKKyAgICAvLyBSZXR1cm5zIGEgV0kuV2ViSW5zcGVjdG9yRXh0ZW5zaW9u
LkVycm9yQ29kZSBpZiBhbiBlcnJvciBvY2N1cnJlZCwgb3RoZXJ3aXNlIG5vdGhpbmcuCisgICAg
cmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVyLnJlZ2lzdGVyRXh0ZW5z
aW9uKGV4dGVuc2lvbklELCBkaXNwbGF5TmFtZSk7CisgICAgfSwKKworICAgIC8vIFJldHVybnMg
YSBXSS5XZWJJbnNwZWN0b3JFeHRlbnNpb24uRXJyb3JDb2RlIGlmIGFuIGVycm9yIG9jY3VycmVk
LCBvdGhlcndpc2Ugbm90aGluZy4KKyAgICB1bnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklE
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdJLnNoYXJlZEFwcC5leHRlbnNpb25Db250cm9sbGVy
LnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uSUQpOworICAgIH0sCiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDhiODQ2MmY4OTQ3
Y2E5NTUxY2I3ZTNmNmFlNDg5NjM3OTQzM2JkMWUuLjMzMzI0YWM0ZDkyM2FkZTAwNTFkNWY5MmQy
ZjM4NTNmMzRjOTJhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UZXN0Lmh0bWwKQEAgLTIyMCw2ICsyMjAsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
VGltZWxpbmVNYXJrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVGlt
ZWxpbmVSZWNvcmRpbmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvVVJM
QnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9XZWJJbnNw
ZWN0b3JFeHRlbnNpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvV2Vi
U29ja2V0UmVzb3VyY2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvV3Jh
cHBlZFByb21pc2UuanMiPjwvc2NyaXB0PgogCkBAIC0yNjMsNiArMjY0LDcgQEAKICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJDb250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvV2ViSW5zcGVjdG9yRXh0ZW5zaW9uQ29udHJvbGxl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1dvcmtlck1hbmFn
ZXIuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1Jlc291cmNl
UXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2OTQwZmQ0MTI1Zjk2NDc0ZmU0YzFkYTYyZTE4
YjA2MTIxYzVkMTRjLi5hYjE1ZmJmNTFlZjM2OGZiZTQ3NDUzNDBkMjYxN2MyZjczOGJjMGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QK
KysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC05
NSw2ICs5NSw3IEBAICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiskKFBST0pFQ1RfRElSKS9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5
Lm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9VSVByb2Nlc3MvTWVkaWEvQXVkaW9TZXNzaW9u
Um91dGluZ0FyYml0cmF0b3JQcm94eS5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0xlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0xNDIsNiArMTQzLDcgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9HUFUvd2VicnRjL1NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5tZXNzYWdlcy5pbgogJChQ
Uk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdl
Ykluc3BlY3RvclVJLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3IubWVzc2FnZXMuaW4KKyQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbgog
JChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9ySW50ZXJydXB0
RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2Uv
V2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDgyZjY3NjdhMTlm
OTMxYTZjNWNkMGI5MWI1YmQwODgzY2I3N2M1YTkuLjRlYjEyNWU5YWRjNzY1YTVhZThkYzExNzU4
N2VlM2U4N2M3N2E0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtMzQ4LDYgKzM0OCw5IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzUmVw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJREJTZXJ2ZXJNZXNzYWdlc1JlcGxpZXMuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyTWVzc2FnZXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXNSZXBsaWVzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rvcklu
dGVycnVwdERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVy
TWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
V2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VzUmVwbGllcy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggM2M5ODc5ZTJhY2RhZjk3MjQ0MjFlNGY1Y2E3ZTgyY2Zl
NzY2N2Y3ZC4uYTc2YjM5NmZlMDUxMzk4NzBhMWIwMWMxNGMxNDFkY2Y0NWE5MmM0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTg0LDYgKzE4NCw3IEBAIE1FU1NBR0VfUkVDRUlW
RVJTID0gXAogCVdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
IFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVy
IFwKIAlXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSSBcCisJV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIFwKIAlXZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3IgXAogCVdlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdl
Ykluc3BlY3RvclVJIFwKIAlXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b25NYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IGIyMjY4OGUwZGJjMTkyZWI2N2Y3OGI1MTUyNGVjNTFlZDcxOWQzMzMuLmUxZjBiMDk4NDVkYjE1
NGZkN2U3ZTEwZDE1OTEwZjg4OWUxMWZkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtNjc1LDYgKzY3NSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5
cGUpOgogICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRpb25zLmgi
J10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUnOiBbJyJHZXN0dXJl
VHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBbJyJHZXN0dXJlVHlw
ZXMuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3InOiBbJyJJ
bnNwZWN0b3JFeHRlbnNpb25UeXBlcy5oIiddLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3Rp
bmdDb250ZXh0SUQnOiBbJyJMYXllckhvc3RpbmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJL
aXQ6OkxheWVySG9zdGluZ01vZGUnOiBbJyJMYXllclRyZWVDb250ZXh0LmgiJ10sCiAgICAgICAg
ICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDZkMDY1NjQ1ZGNlZTYyZTU5ZDUwZGJlZjM3NDM1YTQ5
YTgwZWI2ODIuLmI3YjdlZTY4OGFhNmZmODkwNWEyMWI3NzhkNGQ5NjM1MjI1MTYzOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTEzNyw2ICsxMzcsOSBAQCBwdWJsaWM6
CiAgICAgICAgIEljb25EYXRhYmFzZSwKICAgICAgICAgSW5zcGVjdG9yLAogICAgICAgICBJbnNw
ZWN0b3JDb25maWd1cmF0aW9uLAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAg
ICAgICAgSW5zcGVjdG9yRXh0ZW5zaW9uLAorI2VuZGlmCiAgICAgICAgIEtleVZhbHVlU3RvcmFn
ZU1hbmFnZXIsCiAgICAgICAgIE1lZGlhQ2FjaGVNYW5hZ2VyLAogICAgICAgICBNZXNzYWdlTGlz
dGVuZXIsCkBAIC0zODIsNiArMzg1LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxB
UEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SWNvbkRhdGFi
YXNlLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yLAogICAgICAgICBBUEk6
Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbiwKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCisgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3JFeHRl
bnNpb24sCisjZW5kaWYKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OktleVZhbHVlU3RvcmFn
ZU1hbmFnZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpNZWRpYUNhY2hlTWFuYWdlciwK
ICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lc3NhZ2VMaXN0ZW5lciwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCBjOTQyMGNkNWYyMGRiMTE5OWEyZmYwYTUz
NWNlMDA5Y2Y5Mjg2NWE0Li5mOGEwMjhiMDZiNTEwNjEwOGRkYzNjYmI2OGE0MDFiZmEzNWY3ZGJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC05OSw2ICs5OSwx
MCBAQAogI2ltcG9ydCAiX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmgiCiAjZW5kaWYK
IAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNpbXBvcnQgIl9XS0luc3BlY3Rv
ckV4dGVuc2lvbkludGVybmFsLmgiCisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHNpemVfdCBtaW5p
bXVtT2JqZWN0QWxpZ25tZW50ID0gYWxpZ25vZihzdGQ6OmFsaWduZWRfc3RvcmFnZTxzdGQ6Om51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpPjo6dHlwZSk7CiBzdGF0aWNfYXNzZXJ0KG1pbmlt
dW1PYmplY3RBbGlnbm1lbnQgPj0gYWxpZ25vZih2b2lkKiksICJPYmplY3RzIHNob3VsZCBhbHdh
eXMgYmUgYXQgbGVhc3QgcG9pbnRlci1hbGlnbmVkLiIpOwogc3RhdGljIGNvbnN0IHNpemVfdCBt
YXhpbXVtRXh0cmFTcGFjZUZvckFsaWdubWVudCA9IG1pbmltdW1PYmplY3RBbGlnbm1lbnQgLSBh
bGlnbm9mKHZvaWQqKTsKQEAgLTI3MCw2ICsyNzQsMTIgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmpl
Y3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgd3JhcHBlciA9IFtfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisgICAgY2FzZSBUeXBlOjpJbnNwZWN0b3JFeHRlbnNpb246Cisg
ICAgICAgIHdyYXBwZXIgPSBbX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIGFsbG9jXTsKKyAgICAgICAg
YnJlYWs7CisjZW5kaWYKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdhdGlvbjoKICAgICAgICAgd3Jh
cHBlciA9IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ZjYyZDNkODIxZTlhNmQ4YTAyZGY5OWEwNDRiYzdiYmI5MDNmYmVjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuY3BwCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV1RGOjpTdHJpbmcgaW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JUb1N0cmluZyhJbnNw
ZWN0b3JFeHRlbnNpb25FcnJvciBlcnJvcikKK3sKKyAgICBzd2l0Y2ggKGVycm9yKSB7CisgICAg
Y2FzZSBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6SW50ZXJuYWxFcnJvcjoKKyAgICAgICAgcmV0
dXJuICJJbnRlcm5hbEVycm9yIl9zOworICAgIGNhc2UgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6
OkludmFsaWRSZXF1ZXN0OgorICAgICAgICByZXR1cm4gIkludmFsaWRSZXF1ZXN0Il9zOworICAg
IGNhc2UgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ6CisgICAgICAg
IHJldHVybiAiQ29udGV4dERlc3Ryb3llZCJfczsKKyAgICBjYXNlIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQ6CisgICAgICAgIHJldHVybiAiUmVnaXN0cmF0aW9u
RmFpbGVkIl9zOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAiSW50ZXJuYWxFcnJvciI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvSW5zcGVjdG9yRXh0ZW5zaW9uVHlwZXMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYzZjVlYmZiOGQxNzA1MmQw
YjM2ZWEyNzRjY2ZmNWQ3MDM2NWE0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0luc3BlY3RvckV4dGVuc2lvblR5cGVzLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5n
IEluc3BlY3RvckV4dGVuc2lvblRhYklEID0gV1RGOjpTdHJpbmc7Cit1c2luZyBJbnNwZWN0b3JF
eHRlbnNpb25JRCA9IFdURjo6U3RyaW5nOworCitlbnVtIGNsYXNzIEluc3BlY3RvckV4dGVuc2lv
bkVycm9yIDogdWludDhfdCB7CisgICAgQ29udGV4dERlc3Ryb3llZCwKKyAgICBJbnRlcm5hbEVy
cm9yLAorICAgIEludmFsaWRSZXF1ZXN0LAorICAgIFJlZ2lzdHJhdGlvbkZhaWxlZCwKK307CisK
K1dURjo6U3RyaW5nIGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcoSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3IpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNp
b25FcnJvcj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktp
dDo6SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3IsCisgICAgICAgIFdlYktpdDo6SW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0LAorICAgICAgICBXZWJLaXQ6Okluc3BlY3RvckV4
dGVuc2lvbkVycm9yOjpDb250ZXh0RGVzdHJveWVkLAorICAgICAgICBXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpSZWdpc3RyYXRpb25GYWlsZWQKKyAgICA+OworfTsKKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMjQ1
ZmRiMjFmOTUyOTk4YTM5ZGI4YTIxOTJjOGM1NzJjODkxMDYyZS4uZDNhZWVmOWI3M2IxNzhiMWNj
OTVkMjZiMzliZmYyOGE4N2Y1OWRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xNjIsNiArMTYyLDcgQEAg
U2hhcmVkL0VkaXRpbmdSYW5nZS5jcHAKIFNoYXJlZC9FZGl0b3JTdGF0ZS5jcHAKIFNoYXJlZC9G
b250SW5mby5jcHAKIFNoYXJlZC9GcmFtZUluZm9EYXRhLmNwcAorU2hhcmVkL0luc3BlY3RvckV4
dGVuc2lvblR5cGVzLmNwcAogU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuY3BwCiBTaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuY3BwCiBTaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCkBAIC00Mzgs
NiArNDM5LDcgQEAgVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJveHkuY3BwCitVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVdGls
aXRpZXMuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VEZWJ1Z2dhYmxlLmNwcAogVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU1Miw2
ICs1NTQsNyBAQCBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3IuY3BwCiBXZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUkuY3BwCitXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0LmNwcAogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvclRh
cmdldENvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0RnJvbnRlbmRDaGFubmVsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA4NGQ1
MTM1MmQ0NGE0NTA5NDliM2ZiZDFkMWQ3NjEzNWZiMmJlYjIuLjVkOWI5M2QxN2FmMjRiZWFhMDIw
ZTI4NTI5ODU2OTA5YmNiNmVhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1OSw2ICsy
NTksNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvclRlc3RpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RGVidWdnYWJsZUluZm8ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvcldpbmRvdy5tbQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnRlcm5hbERlYnVnRmVhdHVyZS5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tMaW5rSWNvblBhcmFtZXRlcnMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JFeHRlbnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTBmMThhZmUy
Yzk0ZWM5NzUyN2Y2YjdhZmI0MGRhY2VlZTA0ODBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckV4dGVuc2lvbi5oCkBAIC0wLDAgKzEs
NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBJbnNwZWN0b3JFeHRlbnNpb24gZmlu
YWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6SW5zcGVjdG9yRXh0ZW5z
aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JFeHRlbnNpb24+IGNyZWF0
ZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEluc3BlY3RvckV4dGVuc2lvbihpZGVudGlmaWVyKSk7CisgICAgfQorCisg
ICAgZXhwbGljaXQgSW5zcGVjdG9yRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlm
aWVyKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFdURjo6U3RyaW5nIG1faWRlbnRpZmllcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3Rvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3Rvci5oCmluZGV4IDE4OTllODE4YjM2M2U4NWQ0NjBiMzA5NzNiNGFhMGQ0ODg5OTU5OWUuLjg2
YjFjZjg5NjI3OGYxOTcyYjlhNzk5N2M0OTI3NGQxZWVkY2NmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLmgKQEAgLTI1LDE3ICsyNSwx
NSBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JFeHRlbnNpb25I
b3N0Lmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBXS1dlYlZpZXc7CiBA
Y2xhc3MgX1dLRnJhbWVIYW5kbGU7CitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uOwogQHBy
b3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlOwogCi1OU19BU1NVTUVfTk9OTlVMTF9CRUdJTgot
Ci1AcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdAotLSAodm9pZCljbG9zZTsKLUBl
bmQKLQogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpCiBAaW50
ZXJmYWNlIF9XS0luc3BlY3RvciA6IE5TT2JqZWN0IDxfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0
PgogCkBAIC01Miw2ICs1MCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwg
aW9zKDEyLjIpKQogCiAtICh2b2lkKWNvbm5lY3Q7CiAtICh2b2lkKXNob3c7CistICh2b2lkKWNs
b3NlOwogLSAodm9pZCloaWRlOwogLSAodm9pZClzaG93Q29uc29sZTsKIC0gKHZvaWQpc2hvd1Jl
c291cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yLm1tCmluZGV4IDM1YTliMGMyYzg5MjRmNTY4ZDRmYTY5NmYyNTI5Njg5MmU5OGRiZTcu
LjI2Nzk2NzJjMGIwZTg1ZTVkMDVhNmI4Y2ZkN2JkZjU0ZTU2NjA4YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQpAQCAtMjcsNiAr
MjcsNyBAQAogI2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiSW5z
cGVjdG9yRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLV2ViVmll
d0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NQcm94eS5oIgpAQCAtMzgsNiArMzksMTMgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisjaW1wb3J0ICJX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2Vu
ZGlmCisKIEBpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0b3IKIAogLy8gTUFSSzogX1dLSW5zcGVj
dG9yIG1ldGhvZHMKQEAgLTE4OCw0ICsxOTYsMzggQEAgLSAoQVBJOjpPYmplY3QmKV9hcGlPYmpl
Y3QKICAgICByZXR1cm4gKl9pbnNwZWN0b3I7CiB9CiAKKy8vIE1BUks6IF9XS0luc3BlY3RvckV4
dGVuc2lvbkhvc3QgbWV0aG9kcworCistICh2b2lkKXJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOihO
U1N0cmluZyAqKWV4dGVuc2lvbklEIGRpc3BsYXlOYW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1l
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKiwgX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJ
T05TKQorICAgIF9pbnNwZWN0b3ItPmV4dGVuc2lvbkNvbnRyb2xsZXIoKS5yZWdpc3RlckV4dGVu
c2lvbihleHRlbnNpb25JRCwgZGlzcGxheU5hbWUsIFtwcm90ZWN0ZWRFeHRlbnNpb25JRCA9IHJl
dGFpblB0cihleHRlbnNpb25JRCksIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIGNh
cHR1cmVkQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoRXhwZWN0ZWQ8
Ym9vbCwgV2ViS2l0OjpJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQmxvY2soW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2Vy
SW5mbzpAeyBOU0xvY2FsaXplZEZhaWx1cmVSZWFzb25FcnJvcktleTogaW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3JUb1N0cmluZyhyZXN1bHQuZXJyb3IoKSl9XSwgbmlsKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhcHR1cmVkQmxvY2sobmlsLCBbW3dyYXBwZXIo
QVBJOjpJbnNwZWN0b3JFeHRlbnNpb246OmNyZWF0ZShwcm90ZWN0ZWRFeHRlbnNpb25JRC5nZXQo
KSkpIHJldGFpbl0gYXV0b3JlbGVhc2VdKTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlv
bkhhbmRsZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9yVW5rbm93biB1c2VySW5mbzpuaWxdLCBuaWwpOworI2VuZGlmCit9CisKKy0gKHZvaWQpdW5y
ZWdpc3RlckV4dGVuc2lvbjooX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICopZXh0ZW5zaW9uIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgX2luc3BlY3Rvci0+ZXh0ZW5zaW9u
Q29udHJvbGxlcigpLnVucmVnaXN0ZXJFeHRlbnNpb24oZXh0ZW5zaW9uLmV4dGVuc2lvbklELCBb
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdCkg
eworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tF
cnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVkRmFp
bHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJlc3Vs
dC5lcnJvcigpKX1dKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGNhcHR1cmVkQmxvY2sobmlsKTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRs
ZXIoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5r
bm93biB1c2VySW5mbzpuaWxdKTsKKyNlbmRpZgorfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmM1YTYwMWVkMmNmMzE0ZTdhOGJmODYyMzllODBiNGIxYWE5YmM4MAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JFeHRlbnNpb24uaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+
CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSkKK0BpbnRlcmZhY2UgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uIDogTlNPYmplY3QK
KworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHksIG5vbmF0b21pYykgTlNTdHJpbmcgKmV4dGVuc2lvbklEOworCitAZW5kCisKK05TX0FT
U1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y3ZGU5NDNk
NWFjMzEzMWZkMTU3ZmM4ZmI1ODU5ZjEyNzE4NDEzMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KQEAg
LTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKworTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KKworQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvckV4dGVuc2lvbgorCisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlm
aWVyOihOU1N0cmluZyAqKWV4dGVuc2lvbklECit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0
SW5XcmFwcGVyPEFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uPihzZWxmLCBleHRlbnNpb25JRCk7Cisg
ICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9leHRl
bnNpb24tPkFQSTo6SW5zcGVjdG9yRXh0ZW5zaW9uOjp+SW5zcGVjdG9yRXh0ZW5zaW9uKCk7CisK
KyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
K3sKKyAgICByZXR1cm4gKl9leHRlbnNpb247Cit9CisKKy8vIE1BUks6IFByb3BlcnRpZXMuCisK
Ky0gKE5TU3RyaW5nICopZXh0ZW5zaW9uSUQKK3sKKyAgICByZXR1cm4gX2V4dGVuc2lvbi0+aWRl
bnRpZmllcigpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQor
CitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTg3ZDk2Mzk4MjcxY2EzZmIxZTk5MTM3NDI0OGRiZGQ3ZDQzMzUxMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xhc3MgX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uOworCitAcHJvdG9jb2wgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdAorQG9wdGlvbmFs
CisKKy8qKgorICogQGFic3RyYWN0IFJlZ2lzdGVycyBhIFdlYiBFeHRlbnNpb24gd2l0aCB0aGUg
YXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yLgorICogQHBhcmFtIGV4dGVuc2lvbklEIEEgdW5pcXVl
IGlkZW50aWZpZXIgZm9yIHRoZSBleHRlbnNpb24uCisgKiBAcGFyYW0gZGlzcGxheU5hbWUgQSBs
b2NhbGl6ZWQgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9uLgorICogQHBhcmFtIGNvbXBs
ZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gYmUgY2FsbGVkIHdoZW4gcmVn
aXN0cmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgorICoKKyAqIFdlYiBFeHRlbnNpb25zIGluIFdl
YiBJbnNwZWN0b3IgYXJlIGFjdGl2ZSBhcyBzb29uIGFzIHRoZXkgYXJlIHJlZ2lzdGVyZWQuCisg
Ki8KKy0gKHZvaWQpcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9u
SUQgZGlzcGxheU5hbWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSwgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uICogX051
bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyoqCisgKiBAYWJzdHJhY3QgVW5yZWdpc3Rl
cnMgYSBXZWIgRXh0ZW5zaW9uIHdpdGggdGhlIGFzc29jaWF0ZWQgV2ViIEluc3BlY3Rvci4KKyAq
IEBwYXJhbSBleHRlbnNpb25JRCBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZXh0ZW5zaW9u
LgorICogQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgdG8g
YmUgY2FsbGVkIHdoZW4gdW5yZWdpc3RlcmluZyBzdWNjZWVkcyBvciBmYWlscy4KKyAqCisgKiBV
bnJlZ2lzdGVyaW5nIGFuIGV4dGVuc2lvbiB3aWxsIGF1dG9tYXRpY2FsbHkgY2xvc2UgYW55IGFz
c29jaWF0ZWQgc2lkZWJhcnMvdGFicy4KKyAqLworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9u
OihfV0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoTlNFcnJvciAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qKgorICog
QGFic3RyYWN0IENsb3NlcyB0aGUgYXNzb2NpYXRlZCBXZWIgSW5zcGVjdG9yIGluc3RhbmNlLiBU
aGlzIHdpbGwgY2F1c2UgYWxsCisgKiByZWdpc3RlcmVkIF9XS0luc3BlY3RvckV4dGVuc2lvbnMg
dG8gYmUgdW5yZWdpc3RlcmVkIGFuZCBpbnZhbGlkYXRlZC4KKyAqLworLSAodm9pZCljbG9zZTsK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRl
cm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkwYzQ1ZDU0MDg4MWQ1NGY4NzQ3ZDIxNTY0MmNkODhhZmM5ZDBk
MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaApAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SX0VYVEVOU0lPTlMpCisKKyNpbXBvcnQgIkFQSUluc3BlY3RvckV4dGVuc2lvbi5oIgor
I2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4g
c3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JFeHRlbnNpb24+IHsKKyAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBfV0tJbnNwZWN0b3JFeHRlbnNpb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tJ
bnNwZWN0b3JFeHRlbnNpb24gKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckV4dGVuc2lvbj4gX2V4dGVuc2lvbjsKK30KKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcgKilleHRlbnNpb25JZGVu
dGlmaWVyOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaAppbmRleCBiOWE4YjIwMjAwNTI5YTQyZGE0YWZjMjNkNGZkNGNmMTIwYzg2
ODFjLi5iYTNmYzEzM2IzZmE1NjAyYTdmZDRiNzVmOTJiYjQzMmM2OGU0NDg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaApAQCAtMjQsNiArMjQsNyBAQAog
ICovCiAKICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lmg+CiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogCkBA
IC00NCw3ICs0NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLUmVtb3RlV2ViSW5z
cGVjdG9yRGVidWdnYWJsZVR5cGUpIHsKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMi4z
KSwgaW9zKDEwLjMpKTsKIAogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEyLjMpLCBpb3Mo
MTAuMykpCi1AaW50ZXJmYWNlIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIDog
TlNPYmplY3QKK0BpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIg
OiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdD4KIAogQHByb3BlcnR5IChub25h
dG9taWMsIGFzc2lnbikgaWQgPF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyRGVs
ZWdhdGU+IGRlbGVnYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KaW5kZXggNGU0MGI4YjdhNzVmNWY3MDM1NWQwMWRkNzU1N2NkYjFiYWFmYzQ0Yy4u
OTFiZDU4ZjRkMTIyOGI4ZmU0ZjUwMWQyYzhmOGE1ZDBhNzNlYTc3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMzYsNiArMzYsMTQgQEAKICNp
bXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
SW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RP
Ul9FWFRFTlNJT05TKQorI2ltcG9ydCAiQVBJSW5zcGVjdG9yRXh0ZW5zaW9uLmgiCisjaW1wb3J0
ICJXS0Vycm9yLmgiCisjaW1wb3J0ICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSW50ZXJuYWwuaCIKKyNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgorI2VuZGlmCisKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAK
IEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKCkKQEAgLTE4
Miw2ICsxOTAsNDAgQEAgLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZTooaWQ8
X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4gX051bGxhYmwKICAgICBtX3JlbW90ZUluc3Bl
Y3RvclByb3h5LT5zZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSghIWRlbGVnYXRlKTsKIH0K
IAorLy8gTUFSSzogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdCBtZXRob2RzCisKKy0gKHZvaWQp
cmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6KE5TU3RyaW5nICopZXh0ZW5zaW9uSUQgZGlzcGxheU5h
bWU6KE5TU3RyaW5nICopZGlzcGxheU5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNF
cnJvciAqLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94
eS0+ZXh0ZW5zaW9uQ29udHJvbGxlcigpLnJlZ2lzdGVyRXh0ZW5zaW9uKGV4dGVuc2lvbklELCBk
aXNwbGF5TmFtZSwgW3Byb3RlY3RlZEV4dGVuc2lvbklEID0gcmV0YWluUHRyKGV4dGVuc2lvbklE
KSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgY2FwdHVyZWRCbG9jayA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChFeHBlY3RlZDxib29sLCBXZWJLaXQ6Okluc3Bl
Y3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3Vs
dCkgeworICAgICAgICAgICAgY2FwdHVyZWRCbG9jayhbTlNFcnJvciBlcnJvcldpdGhEb21haW46
V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZvOkB7IE5TTG9jYWxpemVk
RmFpbHVyZVJlYXNvbkVycm9yS2V5OiBpbnNwZWN0b3JFeHRlbnNpb25FcnJvclRvU3RyaW5nKHJl
c3VsdC5lcnJvcigpKX1dLCBuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgY2FwdHVyZWRCbG9jayhuaWwsIFtbd3JhcHBlcihBUEk6Okluc3BlY3RvckV4dGVu
c2lvbjo6Y3JlYXRlKHByb3RlY3RlZEV4dGVuc2lvbklELmdldCgpKSkgcmV0YWluXSBhdXRvcmVs
ZWFzZV0pOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVzZXJJbmZv
Om5pbF0sIG5pbCk7CisjZW5kaWYKK30KKworLSAodm9pZCl1bnJlZ2lzdGVyRXh0ZW5zaW9uOihf
V0tJbnNwZWN0b3JFeHRlbnNpb24gKilleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKyAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5leHRlbnNpb25Db250cm9s
bGVyKCkudW5yZWdpc3RlckV4dGVuc2lvbihleHRlbnNpb24uZXh0ZW5zaW9uSUQsIFtwcm90ZWN0
ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBjYXB0dXJlZEJsb2NrID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gKEV4cGVjdGVkPGJvb2wsIFdlYktpdDo6SW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAg
ICAgICAgICBjYXB0dXJlZEJsb2NrKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWRGYWlsdXJlUmVh
c29uRXJyb3JLZXk6IGluc3BlY3RvckV4dGVuc2lvbkVycm9yVG9TdHJpbmcocmVzdWx0LmVycm9y
KCkpfV0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FwdHVy
ZWRCbG9jayhuaWwpOworICAgIH0pOworI2Vsc2UKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNF
cnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JVbmtub3duIHVz
ZXJJbmZvOm5pbF0pOworI2VuZGlmCit9CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBiMDQ3MzkzMWQ3MzEwZjI1OGU5YmVjY2U3
MGNlNTIyYzg5YTdlOWU0Li5mNWEwMjJlYTJlMGM5NzNkYjgzMjlmMDg4YzU4YzcwMTkzYjA5M2Iy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTM2LDYgKzM2LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05NSw2ICs5OSwx
MyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSk7
CiB9CiAKK3ZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kTG9hZGVkKCkKK3sK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgbV9leHRlbnNpb25Db250cm9s
bGVyLT5pbnNwZWN0b3JGcm9udGVuZExvYWRlZCgpOworI2VuZGlmCit9CisKIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kRGlkQ2xvc2UoKQogewogICAgIFJlZjxSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eT4gcHJvdGVjdCgqdGhpcyk7CkBAIC0xNzUsNiArMTg2LDEwIEBAIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygp
CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
aW5zcGVjdG9yUGFnZS0+d2ViUGFnZUlEKCksICp0aGlzKTsKICAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCptX2luc3BlY3RvclBhZ2UsIFdl
Ykluc3BlY3RvclByb3h5OjppbnNwZWN0b3JCYXNlVVJMKCkpOworCisjaWYgRU5BQkxFKElOU1BF
Q1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk+KCptX2luc3BlY3RvclBhZ2Up
OworI2VuZGlmCiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRl
bmRQYWdlQW5kV2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKaW5kZXggYzAzYTJjYTU3MGQ5
ZjZmODBlYmFhZTU0ZmI5M2FkMjU3MGNiNWZhYS4uMGYxYzA5OGY0MzU5ZDQzZTViZTg1ZGYxN2I2
Yjg2NTNmMTBlYjQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKQEAgLTU2LDYgKzU2LDkgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTsKIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlZpZXc7CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRF
TlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk7Cisj
ZW5kaWYKIAogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgewogcHVibGljOgpA
QCAtODgsNiArOTEsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5T
SU9OUykKKyAgICBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSYgZXh0ZW5z
aW9uQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuICptX2V4dGVuc2lvbkNvbnRyb2xsZXI7IH0K
KyNlbmRpZgorICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBOU1dpbmRvdyAqd2luZG93KCkg
Y29uc3QgeyByZXR1cm4gbV93aW5kb3cuZ2V0KCk7IH0KICAgICBXS1dlYlZpZXcgKndlYlZpZXco
KSBjb25zdDsKQEAgLTExNyw2ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBtZXNzYWdlcy4KKyAgICB2b2lkIGZyb250ZW5k
TG9hZGVkKCk7CiAgICAgdm9pZCBmcm9udGVuZERpZENsb3NlKCk7CiAgICAgdm9pZCByZW9wZW4o
KTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKTsKQEAgLTE0OSw2ICsxNTcsMTAgQEAgcHJpdmF0ZToK
ICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07
CiAgICAgV2ViUGFnZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRyIH07CiAKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PiBtX2V4dGVuc2lvbkNvbnRyb2xsZXI7Cisj
ZW5kaWYKKyAgICAKICAgICBSZWY8QVBJOjpEZWJ1Z2dhYmxlSW5mbz4gbV9kZWJ1Z2dhYmxlSW5m
bzsKICAgICBTdHJpbmcgbV9iYWNrZW5kQ29tbWFuZHNVUkw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzYmVmZmQ1MWFkOTRiZjA1NWU0OTcyYjZjY2Rm
MjkyNzc5MjY0ZjIxLi42NzRiZWMzMjQ2ZDM4ODkzZDU1MmU0NjZiN2VkN2VjZDJlMDhmZGZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSw2ICsyMSw3
IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVdlYkluc3BlY3RvclByb3h5
IHsKKyAgICBGcm9udGVuZExvYWRlZCgpCiAgICAgRnJvbnRlbmREaWRDbG9zZSgpCiAgICAgUmVv
cGVuKCkKICAgICBSZXNldFN0YXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IGYwZjdiMmRmNWU0MTky
YWM0NTQ4YjhmN2JjYjk5N2QxZjEzMGQ0NjAuLjA4MGIxNThmMDFmN2JkOTZiMTAwMTQ0MTRkNTVj
NGM3OGNhNTZhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IldlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
Ykluc3BlY3Rvck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBhZ2VH
cm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCkBAIC00MjEs
NiArNDIyLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZSgp
CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVj
dGVkUGFnZS0+aWRlbnRpZmllcigpLCAqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqbV9pbnNwZWN0b3JQYWdlLCBXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgpKTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5PigqbV9pbnNwZWN0b3JQYWdlKTsKKyNl
bmRpZgogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9u
dGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlc3QpCkBAIC01NDYsNiArNTUxLDEwIEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKICAg
ICBpZiAobV9pc0F0dGFjaGVkKQogICAgICAgICBwbGF0Zm9ybURldGFjaCgpOwogCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG51
bGxwdHI7CisjZW5kaWYKKyAgICAKICAgICAvLyBOdWxsIG91dCBtX2luc3BlY3RvclBhZ2UgYWZ0
ZXIgcGxhdGZvcm1EZXRhY2goKSwgc28gdGhlIHZpZXdzIGNhbiBiZSBjbGVhbmVkIHVwIGNvcnJl
Y3RseS4KICAgICBtX2luc3BlY3RvclBhZ2UgPSBudWxscHRyOwogCkBAIC01NzEsNiArNTgwLDEw
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kTG9hZGVkKCkKIAogICAgIGlmIChh
dXRvKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnByb2Nl
c3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKICAgICAgICAgYXV0b21hdGlvblNlc3Npb24t
Pmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCptX2luc3BlY3RlZFBhZ2UpOworICAgIAorI2lmIEVO
QUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXItPmlu
c3BlY3RvckZyb250ZW5kTG9hZGVkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6YnJpbmdUb0Zyb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggMTRkNDc3ZThkNzlhMWMzOTc5YWM1
YTg5NzYwYmMzZGYwZjVlOWM4NC4uZjU1NDFiZjcwMjgxN2ViYzhiZTM2NTI1ZGFjMzA5Zjg2NTQ1
OGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTY5LDYgKzcwLDkg
QEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYkluc3BlY3RvclByb3h5Q2xpZW50Owog
Y2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJlZmVyZW5jZXM7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUl9FWFRFTlNJT05TKQorY2xhc3MgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyUHJveHk7CisjZW5kaWYKIAogZW51bSBjbGFzcyBBdHRhY2htZW50U2lkZSB7CiAgICAgQm90
dG9tLApAQCAtODAsNiArODQsNyBAQCBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eQogICAgIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yPgogICAgICwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpGcm9u
dGVuZENoYW5uZWwKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNwZWN0b3JQcm94
eT4KICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBwdWJsaWMgV2ViQ29yZTo6V2luZG93TWVzc2Fn
ZUxpc3RlbmVyCiAjZW5kaWYKQEAgLTEwMiw2ICsxMDcsMTAgQEAgcHVibGljOgogICAgIFdlYlBh
Z2VQcm94eSogaW5zcGVjdGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsg
fQogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5z
cGVjdG9yUGFnZTsgfQogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5JiBleHRlbnNpb25Db250cm9sbGVy
KCkgY29uc3QgeyByZXR1cm4gKm1fZXh0ZW5zaW9uQ29udHJvbGxlcjsgfQorI2VuZGlmCisKICAg
ICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3BlY3RvclBhZ2U7IH0K
ICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaXNpYmxlOyB9CiAgICAg
Ym9vbCBpc0Zyb250KCk7CkBAIC0yODYsNiArMjk1LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUGFn
ZVByb3h5KiBtX2luc3BlY3RvclBhZ2UgeyBudWxscHRyIH07CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEFQSTo6SW5zcGVjdG9yQ2xpZW50PiBtX2luc3BlY3RvckNsaWVudDsKIAorI2lmIEVOQUJMRShJ
TlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyUHJveHk+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNlbmRpZgor
ICAgIAogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Zpc2li
bGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0F0dGFjaGVkIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhiOWFiZDcwYmQwZmY2MzM5ZTIyYjM4MzlmZTdlMzFiZGYyNjNmOTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKKyNp
bmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHk6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KFdlYlBhZ2VQcm94eSYg
aW5zcGVjdG9yUGFnZSkKKyAgICA6IG1faW5zcGVjdG9yUGFnZShtYWtlV2Vha1B0cihpbnNwZWN0
b3JQYWdlKSkKK3sKK30KKworV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6
On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eSgpCit7CisgICAgaWYgKCFt
X2luc3BlY3RvclBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW5zcGVjdG9yUGFnZSA9
IG51bGxwdHI7CisKKyAgICBhdXRvIGNhbGxiYWNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV9mcm9udGVu
ZExvYWRlZENhbGxiYWNrUXVldWUsIHsgfSk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNh
bGxiYWNrcykKKyAgICAgICAgY2FsbGJhY2soKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6d2hlbkZyb250ZW5kSGFzTG9hZGVkKEZ1bmN0aW9uPHZv
aWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9mcm9udGVuZExvYWRlZCAmJiBtX2luc3Bl
Y3RvclBhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlLmFwcGVuZChXVEZNb3ZlKGNhbGxi
YWNrKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6
Omluc3BlY3RvckZyb250ZW5kTG9hZGVkKCkKK3sKKyAgICBBU1NFUlQobV9pbnNwZWN0b3JQYWdl
KTsKKworICAgIG1fZnJvbnRlbmRMb2FkZWQgPSB0cnVlOworCisgICAgYXV0byBjYWxsYmFja3Mg
PSBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRlbmRMb2FkZWRDYWxsYmFja1F1ZXVlLCB7IH0pOworICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpCisgICAgICAgIGNhbGxiYWNrKCk7Cit9
CisKKy8vIEFQSQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
OjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRlbnNpb25JRCYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIHdoZW5Gcm9udGVuZEhhc0xvYWRlZChbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgZXh0ZW5zaW9uSUQsIGRpc3BsYXlOYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6Oklu
dmFsaWRSZXF1ZXN0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB3ZWFrVGhpcy0+bV9pbnNwZWN0b3JQYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6UmVnaXN0ZXJFeHRlbnNpb24geyBl
eHRlbnNpb25JRCwgZGlzcGxheU5hbWUgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIH0pOworfQorCit2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
Ojp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3RvckV4dGVuc2lvbklEJiBleHRlbnNp
b25JRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgd2hlbkZyb250
ZW5kSGFzTG9hZGVkKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBleHRlbnNpb25JRCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2Up
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKEluc3BlY3Rv
ckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OlVu
cmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRl
bnNpb25Db250cm9sbGVyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDM0MTBhYjRmMTRjOWE4NDFhMDM5
YmY4YTM5YTVhMjJiYjc3MGRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmgK
QEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiSW5zcGVjdG9yRXh0ZW5zaW9uVHlw
ZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRXhwZWN0
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5IGZpbmFsCisgICAgOiBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eT4geworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5KTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eShXZWJQYWdlUHJveHkmIGluc3BlY3RvclBhZ2UpOworICAg
IHZpcnR1YWwgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KCk7CisKKyAg
ICAvLyBBUEkuCisgICAgdm9pZCByZWdpc3RlckV4dGVuc2lvbihjb25zdCBJbnNwZWN0b3JFeHRl
bnNpb25JRCYsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxib29sLCBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcj4pPiYmKTsKKyAg
ICB2b2lkIHVucmVnaXN0ZXJFeHRlbnNpb24oY29uc3QgSW5zcGVjdG9yRXh0ZW5zaW9uSUQmLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5z
aW9uRXJyb3I+KT4mJik7CisKKyAgICAvLyBOb3RpZmljYXRpb25zLgorICAgIHZvaWQgaW5zcGVj
dG9yRnJvbnRlbmRMb2FkZWQoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHdoZW5Gcm9udGVuZEhh
c0xvYWRlZChGdW5jdGlvbjx2b2lkKCk+JiYpOworCisgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+
IG1faW5zcGVjdG9yUGFnZTsKKworICAgIC8vIFVzZWQgdG8gcXVldWUgYWN0aW9ucyBzdWNoIGFz
IHJlZ2lzdGVyaW5nIGV4dGVuc2lvbnMgdGhhdCBoYXBwZW4gZWFybHkgb24uCisgICAgLy8gVGhl
cmUncyBubyBwb2ludCBzZW5kaW5nIHRoZXNlIGJlZm9yZSB0aGUgZnJvbnRlbmQgaXMgZnVsbHkg
bG9hZGVkLgorICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+PiBtX2Zyb250ZW5kTG9hZGVkQ2Fs
bGJhY2tRdWV1ZTsKKworICAgIGJvb2wgbV9mcm9udGVuZExvYWRlZCB7IGZhbHNlIH07Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCBl
NTVjMTNmZTVmMDg0YTQyYWIyYjcyMzAwM2ZlNTc1YTdmN2IzODU1Li5kZDVmZmE3YjYyZGZlY2Y1
MDVmNGM1NjU5MTM0NTAzOWZkNTVlZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLm1tCkBAIC0xNDksMTQgKzE0OSwxNCBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9y
PFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3RpbmdDcmVkZW50
aQogICAgICAgICB9CiAgICAgICAgIGF1dG8mIHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNl
LT5nZXRNYXAoKTsKIAotICAgICAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKGtF
bnRpdHlJZE1hcEtleSkpOworICAgICAgICBhdXRvIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9S
KGZpZG86OmtFbnRpdHlJZE1hcEtleSkpOwogICAgICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAu
ZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpIHsKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAg
ICAgfQogICAgICAgICBhdXRvJiB1c2VySGFuZGxlID0gaXQtPnNlY29uZC5nZXRCeXRlU3RyaW5n
KCk7CiAKLSAgICAgICAgaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1Ioa0VudGl0eU5hbWVNYXBL
ZXkpKTsKKyAgICAgICAgaXQgPSByZXNwb25zZU1hcC5maW5kKENCT1IoZmlkbzo6a0VudGl0eU5h
bWVNYXBLZXkpKTsKICAgICAgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFpdC0+
c2Vjb25kLmlzU3RyaW5nKCkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTMwMCw4ICszMDAsOCBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlm
aWNhdGlvbihTZWNBY2Nlc3NDbwogICAgIGNvbnN0IGF1dG8mIHNlY0F0dHJMYWJlbCA9IGNyZWF0
aW9uT3B0aW9ucy5ycC5pZDsKIAogICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgdXNlckVu
dGl0eU1hcDsKLSAgICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JWYWx1ZShrRW50aXR5SWRNYXBL
ZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvcik7Ci0g
ICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9SVmFsdWUoa0VudGl0eU5hbWVNYXBLZXkpXSA9IGNi
b3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1lKTsKKyAgICB1c2VyRW50aXR5
TWFwW2Nib3I6OkNCT1JWYWx1ZShmaWRvOjprRW50aXR5SWRNYXBLZXkpXSA9IGNib3I6OkNCT1JW
YWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvcik7CisgICAgdXNlckVudGl0eU1hcFtj
Ym9yOjpDQk9SVmFsdWUoZmlkbzo6a0VudGl0eU5hbWVNYXBLZXkpXSA9IGNib3I6OkNCT1JWYWx1
ZShjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1lKTsKICAgICBhdXRvIHVzZXJFbnRpdHkgPSBjYm9y
OjpDQk9SV3JpdGVyOjp3cml0ZShjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZSh1c2VyRW50aXR5TWFw
KSkpOwogICAgIEFTU0VSVCh1c2VyRW50aXR5KTsKICAgICBhdXRvIHNlY0F0dHJBcHBsaWNhdGlv
blRhZyA9IHRvTlNEYXRhKCp1c2VyRW50aXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBlZTk5NzEwMTk2MDM2YjNmYTFiZmUzMTMx
NTNiODlmMjg4ODdkMzkuLjI4ZmU4ODFjMTJmODY1YzU0NWRmNGY1OTZkOGMyYjczNjRkZDY3M2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTQzOCw4ICsxNDM4LDE1IEBACiAJCTk5NTVBNkY2MUM3OTg2RTMwMEVCNkE5MyAvKiBBdXRv
bWF0aW9uUHJvdG9jb2xPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYyMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJv
dG9jb2xPYmplY3RzLmNwcCAqLzsgfTsKIAkJOTk1NUE2RjcxQzc5ODZFNTAwRUI2QTkzIC8qIEF1
dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5NTVBNkYzMUM3OTg2NjQwMEVCNkE5MyAvKiBBdXRvbWF0aW9uUHJv
dG9jb2xPYmplY3RzLmggKi87IH07CiAJCTk5Nzg4QUNCMUY0MjFEREEwMEMwODAwMCAvKiBfV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzg4QUM5MUY0MjFEQ0EwMEMwODAwMCAvKiBfV0tBdXRv
bWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk5OTc5NjU5RTI1MzEwQTQ5MDBCMzFBRTMgLyogV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5Nzk2NTlBMjUzMTBBNDgwMEIzMUFFMyAvKiBX
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovOyB9OworCQk5OTc5
NjU5RjI1MzEwQTQ5MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5Nzk2NTlCMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk5OTc5NjVBMzI1MzEy
OEM3MDBCMzFBRTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk3OTY1QTIyNTMxMjhDNzAwQjMxQUUz
IC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTc5Q0E1ODIzN0Y0OUYxMDAzOUVDMDUgLyogX1dL
SW5zcGVjdG9yUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTk5
NkE5RjI1MDA0QkNDMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5OTk2QTlEMjUw
MDRCQ0IwMDRGNzU1OSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5QjE2NzU3MjUyQkI3
RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBf
V0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5OUIxNjc1ODI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9y
RXh0ZW5zaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk5QjE2NzU1MjUyQkI3RTEwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b25JbnRlcm5hbC5oICovOyB9OworCQk5OUIxNjc1QjI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5QjE2NzVBMjUyQkJBREQwMDczMTQwRSAvKiBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5oICovOyB9OworCQk5OUIxNjc2NDI1
MkJCRTYyMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUIxNjc2MTI1MkJC
RTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggKi87IH07
CiAJCTk5QzNBRTJEMURBREE2QUQwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jv
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDM0FF
MkMxREFEQTZBNzAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggKi87IH07
CiAJCTk5QzgxRDVBMUMyMEU3RTIwMDVDNEM4MiAvKiBBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OUM4MUQ1NTFDMjBERkJF
MDA1QzRDODIgLyogQXV0b21hdGlvbkNsaWVudC5oICovOyB9OwogCQk5OUM4MUQ1RDFDMjFGMzhC
MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlDODFENUIxQzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1
dG9tYXRpb25DbGllbnQuaCAqLzsgfTsKQEAgLTQ1ODEsOSArNDU4OCwyMyBAQAogCQk5OTU1QTZG
MzFDNzk4NjY0MDBFQjZBOTMgLyogQXV0b21hdGlvblByb3RvY29sT2JqZWN0cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBdXRvbWF0aW9uUHJvdG9jb2xPYmplY3RzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTk3ODhBQzkxRjQyMURDQTAw
QzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk3ODhBQ0ExRjQyMURDQTAwQzA4MDAw
IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlv
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk3OTY1OUEyNTMxMEE0ODAwQjMx
QUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCTk5Nzk2NTlCMjUzMTBBNDgwMEIzMUFFMyAvKiBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVz
c2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTk3OTY1QTIyNTMxMjhDNzAwQjMxQUUzIC8qIF9X
S0luc3BlY3RvckV4dGVuc2lvbkhvc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JQcml2YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5OTk2QTlEMjUwMDRCQ0IwMDRGNzU1OSAvKiBf
V0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OTk5NkE5RTI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yVGVz
dGluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3Bl
Y3RvclRlc3RpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5OUI3RUQ4MjU1
MEU0QTgwMEY0NTBBNCAvKiBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5QjE2NzU0MjUyQkI3RTAwMDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRXh0ZW5z
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5QjE2NzU1MjUyQkI3RTEwMDcz
MTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JFeHRlbnNpb25JbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc1NjI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5z
cGVjdG9yRXh0ZW5zaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTlCMTY3NjAyNTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5OUIxNjc2MTI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5OUIxNjc2MjI1MkJCRTYxMDA3MzE0MEUgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTlCRTNCMTIyNTQyMkY0MTAwQzY1NTFDIC8qIEFQSUluc3BlY3Rv
ckV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbnNwZWN0
b3JFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlCRTNCMTYyNTQz
M0I5NDAwQzY1NTFDIC8qIEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5QzNBRTIzMURBRDhFMzQwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNz
aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUMzQUUyNjFEQUQ5NDg1
MDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uQ29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5QzNBRTJDMURBREE2QTcwMEFGNUMxNiAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjE2NCw2ICs2MTg1LDggQEAKIAkJCQk1QzEyMUU4MzI0MTAxRjcwMDA0ODZGOUIg
LyogRnJhbWVUcmVlTm9kZURhdGEuaCAqLywKIAkJCQkxQUM3NUExQTFCMzM2ODI3MDA1Njc0NUIg
LyogSGFuZ0RldGVjdGlvbkRpc2FibGVyLmggKi8sCiAJCQkJQkNDRjZCMjMxMkM5M0U3QTAwOEY5
QzM1IC8qIEltYWdlT3B0aW9ucy5oICovLAorCQkJCTk5OUI3RUQ4MjU1MEU0QTgwMEY0NTBBNCAv
KiBJbnNwZWN0b3JFeHRlbnNpb25UeXBlcy5jcHAgKi8sCisJCQkJOTlCRTNCMTYyNTQzM0I5NDAw
QzY1NTFDIC8qIEluc3BlY3RvckV4dGVuc2lvblR5cGVzLmggKi8sCiAJCQkJMUE5MkRDMTIxMkY4
QkFCOTAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuY3BwICovLAogCQkJCTFBOTJEQzEwMTJG
OEJBNDYwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0LmggKi8sCiAJCQkJMkQxMDg3NUUxRDJD
NTczRTAwQjg1RjgyIC8qIExvYWRQYXJhbWV0ZXJzLmNwcCAqLywKQEAgLTczODMsNiArNzQwNiwx
MCBAQAogCQkJCTk5MUY0OTJFMjNBODEyQzYwMDU0NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dh
YmxlSW5mby5tbSAqLywKIAkJCQk5OTAzNkFFMTIzQTk0OUNFMDAwMEIwNkEgLyogX1dLSW5zcGVj
dG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oICovLAogCQkJCTkxOTc5NDBCMjNEQkM1MDMwMDI1
Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAorCQkJCTk5QjE2NzU0MjUyQkI3RTAw
MDczMTQwRSAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKKwkJCQk5OUIxNjc1NjI1MkJC
N0UxMDA3MzE0MEUgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uLm1tICovLAorCQkJCTk5Nzk2NUEy
MjUzMTI4QzcwMEIzMUFFMyAvKiBfV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0LmggKi8sCisJCQkJ
OTlCMTY3NTUyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFs
LmggKi8sCiAJCQkJNUNBRkRFNDQyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVy
bmFsLmggKi8sCiAJCQkJOTk3OUNBNTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclBy
aXZhdGUuaCAqLywKIAkJCQk5OTk5NkE5RDI1MDA0QkNCMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9y
UHJpdmF0ZUZvclRlc3RpbmcuaCAqLywKQEAgLTg2OTUsNiArODcyMiw4IEBACiAJCQkJMUM4RTI4
MzMxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmNwcCAqLywKIAkJCQkxQzhF
MjgzMjEyNzVENzM4MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yUHJveHkuaCAqLywKIAkJCQkxQzc3
QzE5NTEyODhBODcyMDA2QTc0MkYgLyogV2ViSW5zcGVjdG9yUHJveHkubWVzc2FnZXMuaW4gKi8s
CisJCQkJOTlCMTY3NUQyNTJCQkUwQTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5LmNwcCAqLywKKwkJCQk5OUIxNjc1QTI1MkJCQUREMDA3MzE0MEUgLyog
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCAqLywKIAkJCQlBNTVCQTgy
NzFCQTM4RTFFMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlB
NTVCQTgyODFCQTM4RTFFMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmggKi8sCiAJ
CQkJQTVFQzZBRDIyMTUxQkQ2OTAwNjc3RDE3IC8qIFdlYlBhZ2VEZWJ1Z2dhYmxlLmNwcCAqLywK
QEAgLTg3NTcsNiArODc4Niw5IEBACiAJCQkJMUM4OTFENjIxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmNwcCAqLywKIAkJCQkxQzg5MUQ2MzE5QjEyNEZGMDBCQTc5REQgLyogV2Vi
SW5zcGVjdG9yVUkuaCAqLywKIAkJCQkxQzg5MUQ2NDE5QjEyNEZGMDBCQTc5REQgLyogV2ViSW5z
cGVjdG9yVUkubWVzc2FnZXMuaW4gKi8sCisJCQkJOTlCMTY3NjAyNTJCQkU2MTAwNzMxNDBFIC8q
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgKi8sCisJCQkJOTlCMTY3NjEy
NTJCQkU2MTAwNzMxNDBFIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oICov
LAorCQkJCTk5QjE2NzYyMjUyQkJFNjEwMDczMTQwRSAvKiBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJQTU0M0UzMEEyMTVDOEE4NDAwMjc5Q0Q5
IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwICovLAogCQkJCUE1NDNFMzA4MjE1QzhBODMw
MDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmggKi8sCiAJCQkJQTU0M0UzMDkyMTVD
OEE4MzAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmNwcCAqLywK
QEAgLTkzODUsNiArOTQxNyw3IEBACiAJCQkJOTE5Nzk0MDkyM0RCQzRFMDAwMjU3ODkyIC8qIEFQ
SUluc3BlY3RvckNsaWVudC5oICovLAogCQkJCTk5NEM2MDQ4MjUzRjgyMDIwMEJERjA2MCAvKiBB
UElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcCAqLywKIAkJCQk5OTRDNjA0NjI1M0NBQ0I4MDBC
REYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTk5QkUzQjEyMjU0
MjJGNDEwMEM2NTUxQyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uaCAqLywKIAkJCQkzMUIzNjI5
MDIxNDFFQUJDMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwICovLAogCQkJ
CTMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICov
LAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudC5oICovLApAQCAtMTA0MTUsNiArMTA0NDgsOCBAQAogCQkJCTFDOEUyQTMyMTI3Nzg1
MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oICovLAogCQkJCTFDQThCOTQzMTI3
Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CiAJCQkJMUNBOEI5NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2Fn
ZXMuaCAqLywKKwkJCQk5OTc5NjU5QjI1MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk5OTc5NjU5QTI1
MzEwQTQ4MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2Fn
ZXMuaCAqLywKIAkJCQkxQ0JCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTFDQkJFNDlGMTlCNjZDNTMwMDZCN0Q4MSAvKiBX
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggKi8sCiAJCQkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODJG
IC8qIFdlYk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMDgzMCw2ICsx
MDg2NSw5IEBACiAJCQkJOTkxRjQ5MkYyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRl
YnVnZ2FibGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAwMEIw
NkEgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTE5Nzk0MEMyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc1NzI1MkJCN0UxMDA3MzE0MEUgLyogX1dLSW5zcGVj
dG9yRXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTc5NjVBMzI1MzEyOEM3MDBCMzFB
RTMgLyogX1dLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTlC
MTY3NTgyNTJCQjdFMTAwNzMxNDBFIC8qIF9XS0luc3BlY3RvckV4dGVuc2lvbkludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Q0FGREU0NzIxMzA4NDZBMDBCMUY3RTEgLyogX1dLSW5zcGVj
dG9ySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NzlDQTU4MjM3RjQ5RjEwMDM5RUMw
NSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTk5NkE5RjI1
MDA0QkNDMDA0Rjc1NTkgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTE1NzAsNiArMTE2MDgsOSBAQAogCQkJCTFDOEUyODM0MTI3NUQ3MzgwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBOEI5NDYx
MjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTlCMTY3NjQyNTJCQkU2MjAwNzMxNDBFIC8qIFdlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk3OTY1OUUyNTMx
MEE0OTAwQjMxQUUzIC8qIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUIxNjc1QjI1MkJCQUREMDA3MzE0MEUgLyogV2ViSW5z
cGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFD
QkJFNEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTVCQTgyQjFCQTM4RTYxMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREE5NDRBMDE4ODRFNEYwMDBFRDg2REIgLyog
V2ViSU9TRXZlbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKQEAgLTEzMzkwLDYgKzEzNDMxLDcg
QEAKIAkJCQlGRURCRENENjFFNjhEMjAwMDBBNTlGOEYgLyogV2ViSW5zcGVjdG9ySW50ZXJydXB0
RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzhFMkEz
NTEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5OTc5NjU5RjI1MzEw
QTQ5MDBCMzFBRTMgLyogV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAv
KiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDkyQTc4QTIxMkI2QUIxMDBGNDkzRkQgLyogV2ViS2V5Ym9hcmRFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2QUQ5RjkgLyogV2ViS2l0Lm0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVt
b3RlV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggNjc3MWM2ZjBkZTYzMWZjYzE0MmVmNjA4
NmZlMGFhYmU3NGM3ZjY1My4uZDEzOTBiZmQ2ZjZiZTIzMTU2NjdjMDRmZDZiZWMzZDZhYzE1NTJk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTM5LDYgKzM5LDEwIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5n
cy5oPgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorI2luY2x1ZGUgIldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5oIgorI2VuZGlmCisKICNpZiAhUExBVEZPUk0o
TUFDKSAmJiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNlbmRpZgpAQCAtNTgsOCArNjIsMTQgQEAgUmVtb3RlV2Vi
SW5zcGVjdG9yVUk6OlJlbW90ZVdlYkluc3BlY3RvclVJKFdlYlBhZ2UmIHBhZ2UpCiAgICAgV2Vi
SW5zcGVjdG9yVUk6OmVuYWJsZUZyb250ZW5kRmVhdHVyZXMoKTsKIH0KIAorUmVtb3RlV2ViSW5z
cGVjdG9yVUk6On5SZW1vdGVXZWJJbnNwZWN0b3JVSSgpID0gZGVmYXVsdDsKKwogdm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6aW5pdGlhbGl6ZShEZWJ1Z2dhYmxlSW5mb0RhdGEmJiBkZWJ1Z2dh
YmxlSW5mbywgY29uc3QgU3RyaW5nJiBiYWNrZW5kQ29tbWFuZHNVUkwpCiB7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5zaW9uQ29udHJvbGxlciA9IG1ha2VV
bmlxdWU8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyPigqdGhpcyk7CisjZW5kaWYK
KwogICAgIG1fZGVidWdnYWJsZUluZm8gPSBXVEZNb3ZlKGRlYnVnZ2FibGVJbmZvKTsKICAgICBt
X2JhY2tlbmRDb21tYW5kc1VSTCA9IGJhY2tlbmRDb21tYW5kc1VSTDsKIApAQCAtMTA5LDYgKzEx
OSw4IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKCkKIAogICAg
IG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLT5kaXNwYXRjaENvbW1hbmRXaXRoUmVzdWx0QXN5bmMo
InNldElzVmlzaWJsZSJfcywgeyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHRydWUpIH0pOwogCisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkZyb250ZW5kTG9hZGVkKCksIG1fcGFn
ZS5pZGVudGlmaWVyKCkpOworCiAgICAgYnJpbmdUb0Zyb250KCk7CiB9CiAKQEAgLTE3NCw2ICsx
ODYsMTAgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogewogICAg
IG1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQobnVsbHB0cik7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMp
CisgICAgbV9leHRlbnNpb25Db250cm9sbGVyID0gbnVsbHB0cjsKKyNlbmRpZgorICAgIAogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpGcm9udGVuZERpZENsb3NlKCksIG1f
cGFnZS5pZGVudGlmaWVyKCkpOwogfQogCkBAIC0yNTgsNiArMjc0LDEyIEBAIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yVUk6OnNldERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKGJvb2wgYXZhaWxh
YmxlKQogfQogI2VuZGlmCiAKK1dlYkNvcmU6OlBhZ2UqIFJlbW90ZVdlYkluc3BlY3RvclVJOjpm
cm9udGVuZFBhZ2UoKQoreworICAgIHJldHVybiBtX3BhZ2UuY29yZVBhZ2UoKTsKK30KKworCiAj
aWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKFdJTikKIFN0
cmluZyBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bG9jYWxpemVkU3RyaW5nc1VSTCgpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdl
Ykluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclVJLmgKaW5kZXggMDI1ZWM5MGExZDRhZjFjOWY1NTNkYmM0MmY3YzkzOWZk
NDM5ODQ5My4uYjhkYTlhOWY4YTVhNzY2ZDEzNjEyMjZhZjBjNGU4NTYxNjU2YjNkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0
b3JVSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yVUkuaApAQCAtMzksMTEgKzM5LDE2IEBAIGNsYXNzIEZsb2F0UmVjdDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
cjsKIGNsYXNzIFdlYlBhZ2U7CiAKLWNsYXNzIFJlbW90ZVdlYkluc3BlY3RvclVJIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yVUk+LCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7Citj
bGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JVSSBmaW5hbAorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8
UmVtb3RlV2ViSW5zcGVjdG9yVUk+CisgICAgLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
KyAgICAsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxSZW1vdGVXZWJJbnNwZWN0b3JVST4gY3JlYXRlKFdlYlBhZ2UmKTsK
KyAgICB+UmVtb3RlV2ViSW5zcGVjdG9yVUkoKTsKIAogICAgIC8vIEltcGxlbWVudGVkIGluIGdl
bmVyYXRlZCBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwpAQCAtOTcsNiArMTAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2hvd0NlcnRpZmljYXRl
KGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyJiBmcm9udGVuZEFQSURpc3BhdGNoZXIoKSBv
dmVycmlkZSB7IHJldHVybiBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlcjsgfQorICAgIFdlYkNvcmU6
OlBhZ2UqIGZyb250ZW5kUGFnZSgpIGZpbmFsOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9URUxF
TUVUUlkpCiAgICAgYm9vbCBzdXBwb3J0c0RpYWdub3N0aWNMb2dnaW5nKCkgb3ZlcnJpZGU7CkBA
IC0xMTcsNiArMTIzLDEwIEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZSYgbV9wYWdlOwogICAgIFJl
ZjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXI+IG1fZnJvbnRlbmRBUElE
aXNwYXRjaGVyOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q+IG1f
ZnJvbnRlbmRIb3N0OworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyPiBtX2V4dGVuc2lv
bkNvbnRyb2xsZXI7CisjZW5kaWYKKwogICAgIERlYnVnZ2FibGVJbmZvRGF0YSBtX2RlYnVnZ2Fi
bGVJbmZvOwogICAgIFN0cmluZyBtX2JhY2tlbmRDb21tYW5kc1VSTDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcAppbmRl
eCA4MjgwOWFkYjZkZWU2YTU1YmI5NTI2NzgzNTEzOGFjMjM2Nzk1ZTVkLi4wMGY5NDFlNzQ1ODY3
Y2ZkZTFlZTVlM2Q2MDZjYThlOWQzMDc3NjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJLmNwcApAQCAtMzYsMTAgKzM2LDE1
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ29udHJvbGxlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KIAorI2lmIEVOQUJM
RShJTlNQRUNUT1JfRVhURU5TSU9OUykKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC02NSw2ICs3MCw4IEBAIFdlYkluc3BlY3RvclVJOjpXZWJJbnNw
ZWN0b3JVSShXZWJQYWdlJiBwYWdlKQogICAgIFdlYkluc3BlY3RvclVJOjplbmFibGVGcm9udGVu
ZEZlYXR1cmVzKCk7CiB9CiAKK1dlYkluc3BlY3RvclVJOjp+V2ViSW5zcGVjdG9yVUkoKSA9IGRl
ZmF1bHQ7CisKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgY29uc3QgRGVidWdnYWJs
ZUluZm9EYXRhJiBkZWJ1Z2dhYmxlSW5mbywgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3Bl
Y3Rpb25MZXZlbCkKIHsKICAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gaW5zcGVjdGVk
UGFnZUlkZW50aWZpZXI7CkBAIC03Miw4ICs3OSwxMiBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpl
c3RhYmxpc2hDb25uZWN0aW9uKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlk
ZQogICAgIG1fdW5kZXJUZXN0ID0gdW5kZXJUZXN0OwogICAgIG1faW5zcGVjdGlvbkxldmVsID0g
aW5zcGVjdGlvbkxldmVsOwogCi0gICAgbV9mcm9udGVuZEFQSURpc3BhdGNoZXItPnJlc2V0KCk7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIGlmICghbV9leHRlbnNpb25D
b250cm9sbGVyKQorICAgICAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXIgPSBtYWtlVW5pcXVlPFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcj4oKnRoaXMpOworI2VuZGlmCiAKKyAgICBt
X2Zyb250ZW5kQVBJRGlzcGF0Y2hlci0+cmVzZXQoKTsKICAgICBtX2Zyb250ZW5kQ29udHJvbGxl
ciA9ICZtX3BhZ2UuY29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOwogICAgIG1fZnJv
bnRlbmRDb250cm9sbGVyLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudCh0aGlzKTsKIApAQCAt
MTY1LDYgKzE3NiwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCiAKICAg
ICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1fdW5kZXJUZXN0ID0gZmFs
c2U7CisgICAgCisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgIG1fZXh0ZW5z
aW9uQ29udHJvbGxlciA9IG51bGxwdHI7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JV
STo6cmVvcGVuKCkKQEAgLTQxMiw2ICs0MjcsMTIgQEAgU3RyaW5nIFdlYkluc3BlY3RvclVJOjp0
YXJnZXRQcm9kdWN0VmVyc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVidWdnYWJsZUluZm8u
dGFyZ2V0UHJvZHVjdFZlcnNpb247CiB9CiAKK1dlYkNvcmU6OlBhZ2UqIFdlYkluc3BlY3RvclVJ
Ojpmcm9udGVuZFBhZ2UoKQoreworICAgIHJldHVybiBtX3BhZ2UuY29yZVBhZ2UoKTsKK30KKwor
CiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKFdJTikK
IGJvb2wgV2ViSW5zcGVjdG9yVUk6OmNhblNhdmUoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSS5oCmluZGV4IGE2ZWU3MTMzOTM5
ZWYyYTA0YjZiODYyYjI4ZTgyMTdmZTIwZGIxZWUuLjI0YzFhYjQ2OWU4MGQ1YjM3N2IwNjA5Zjcw
NWZkZTZmZTBlOWQyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNw
ZWN0b3IvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJLmgKQEAgLTMxLDEwICszMSwxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvSW5zcGVjdG9yRGVidWdnYWJsZVR5cGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9z
dC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwor
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OwogY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogY2xh
c3MgRmxvYXRSZWN0OwogfQpAQCAtNDIsMTAgKzQyLDE3IEBAIGNsYXNzIEZsb2F0UmVjdDsKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOworI2lmIEVOQUJMRShJTlNQRUNUT1Jf
RVhURU5TSU9OUykKK2NsYXNzIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjsKKyNl
bmRpZgogCi1jbGFzcyBXZWJJbnNwZWN0b3JVSSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkluc3Bl
Y3RvclVJPiwgcHJpdmF0ZSBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgcHVibGljIFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvclVJIGZpbmFsCisg
ICAgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJJbnNwZWN0b3JVST4KKyAgICAsIHByaXZhdGUgSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJJbnNwZWN0b3JVST4gY3Jl
YXRlKFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JVSSgpOwogCiAgICAgc3Rh
dGljIHZvaWQgZW5hYmxlRnJvbnRlbmRGZWF0dXJlcygpOwogCkBAIC0xNDMsNyArMTUwLDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXImIGZy
b250ZW5kQVBJRGlzcGF0Y2hlcigpIGZpbmFsIHsgcmV0dXJuIG1fZnJvbnRlbmRBUElEaXNwYXRj
aGVyOyB9Ci0KKyAgICBXZWJDb3JlOjpQYWdlKiBmcm9udGVuZFBhZ2UoKSBmaW5hbDsKKyAgICAg
ICAgCiAgICAgdm9pZCBwYWdlUGF1c2VkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWdlVW5wYXVz
ZWQoKSBvdmVycmlkZTsKIApAQCAtMTYwLDYgKzE2OCwxMCBAQCBwcml2YXRlOgogICAgIC8vIGNv
cmVQYWdlKCksIHNpbmNlIHdlIG1heSBuZWVkIGl0IGFmdGVyIHRoZSBmcm9udGVuZCdzIHBhZ2Ug
aGFzIHN0YXJ0ZWQgZGVzdHJ1Y3Rpb24uCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
ciogbV9mcm9udGVuZENvbnRyb2xsZXIgeyBudWxscHRyIH07CiAKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlcj4gbV9leHRlbnNpb25Db250cm9sbGVyOworI2VuZGlmCisKICAgICBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CiAgICAgYm9vbCBt
X3VuZGVyVGVzdCB7IGZhbHNlIH07CiAgICAgRGVidWdnYWJsZUluZm9EYXRhIG1fZGVidWdnYWJs
ZUluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjI3NWNmNmE2ZTdlNTBjNmIzNjA2MmUxMzE4NzU3NTI4OWE1ODBlZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKKworI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclVJLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcihXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudCYgaW5zcGVjdG9yRnJvbnRlbmQpCisgICAgOiBt
X2Zyb250ZW5kQ2xpZW50KG1ha2VXZWFrUHRyKGluc3BlY3RvckZyb250ZW5kKSkKK3sKKyAgICBQ
YWdlKiBwYWdlID0gaW5zcGVjdG9yRnJvbnRlbmQuZnJvbnRlbmRQYWdlKCk7CisgICAgQVNTRVJU
KHBhZ2UpOworCisvLyAgICBXVEZSZXBvcnRCYWNrdHJhY2UoKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBXZWJQYWdlOjpmcm9tQ29y
ZVBhZ2UoKnBhZ2UpLmlkZW50aWZpZXIoKSwgKnRoaXMpOworfQorCitXZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXI6On5XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIoKQor
eworLy8gICAgV1RGUmVwb3J0QmFja3RyYWNlKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKCp0aGlzKTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I+IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6cGFyc2VJ
bnNwZWN0b3JFeHRlbnNpb25FcnJvckZyb21SZXN1bHQoSlNDOjpKU1ZhbHVlIHJlc3VsdCkKK3sK
KyAgICBBU1NFUlQobV9mcm9udGVuZENsaWVudCk7CisgICAgYXV0byBnbG9iYWxPYmplY3QgPSBt
X2Zyb250ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5mcm9udGVuZEdsb2JhbE9i
amVjdCgpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gSW5zcGVjdG9y
RXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQ7CisKKyAgICAvLyBJZiB0aGUgZXZhbHVh
dGlvbiByZXN1bHQgaXMgYSBzdHJpbmcsIHRoZSBmcm9udGVuZCByZXR1cm5lZCBhbiBlcnJvciBz
dHJpbmcuCisgICAgLy8gQW55dGhpbmcgZWxzZSAoZmFsc3kgdmFsdWVzLCBvYmplY3RzLCBhcnJh
eXMsIERPTSwgZXRjLikgaXMgaW50ZXJwcmV0ZWQgYXMgc3VjY2Vzcy4KKyAgICBpZiAocmVzdWx0
LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSByZXN1bHQudG9XVEZT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiQ29udGV4
dERlc3Ryb3llZCJfcykKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJv
cjo6Q29udGV4dERlc3Ryb3llZDsKKyAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW50ZXJu
YWxFcnJvciJfcykKKyAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JFeHRlbnNpb25FcnJvcjo6
SW50ZXJuYWxFcnJvcjsKKyAgICAgICAgaWYgKHJlc3VsdFN0cmluZyA9PSAiSW52YWxpZFJlcXVl
c3QiX3MpCisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFs
aWRSZXF1ZXN0OworICAgICAgICBpZiAocmVzdWx0U3RyaW5nID09ICJSZWdpc3RyYXRpb25GYWls
ZWQiX3MpCisgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OlJlZ2lz
dHJhdGlvbkZhaWxlZDsKKworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnRlcm5hbEVycm9yOworICAgIH0KKwor
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKKy8vIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlciBJUEMgbWVzc2FnZXMuCisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyOjpyZWdpc3RlckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbklELCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PGJvb2wsIEluc3BlY3RvckV4dGVuc2lvbkVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgaWYgKCFtX2Zyb250ZW5kQ2xpZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1ha2VVbmV4cGVjdGVkKEluc3BlY3RvckV4dGVuc2lvbkVycm9yOjpJbnZhbGlkUmVxdWVzdCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPFJlZjxKU09OOjpWYWx1ZT4+
IGFyZ3VtZW50cyB7CisgICAgICAgIEpTT046OlZhbHVlOjpjcmVhdGUoZXh0ZW5zaW9uSUQpLAor
ICAgICAgICBKU09OOjpWYWx1ZTo6Y3JlYXRlKGRpc3BsYXlOYW1lKSwKKyAgICB9OworICAgIG1f
ZnJvbnRlbmRDbGllbnQtPmZyb250ZW5kQVBJRGlzcGF0Y2hlcigpLmRpc3BhdGNoQ29tbWFuZFdp
dGhSZXN1bHRBc3luYygicmVnaXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwg
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZh
bHVhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMg
fHwgIXJlc3VsdCkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0
ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0g
d2Vha1RoaXMtPnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tUmVzdWx0KHJlc3VsdC52
YWx1ZSgpKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
cGFyc2VkRXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjp1bnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgZXh0ZW5zaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9v
bCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoIW1fZnJvbnRlbmRDbGllbnQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkludmFsaWRSZXF1ZXN0KSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8UmVmPEpTT046OlZhbHVlPj4gYXJn
dW1lbnRzIHsgSlNPTjo6VmFsdWU6OmNyZWF0ZShleHRlbnNpb25JRCkgfTsKKyAgICBtX2Zyb250
ZW5kQ2xpZW50LT5mcm9udGVuZEFQSURpc3BhdGNoZXIoKS5kaXNwYXRjaENvbW1hbmRXaXRoUmVz
dWx0QXN5bmMoInVucmVnaXN0ZXJFeHRlbnNpb24iX3MsIFdURk1vdmUoYXJndW1lbnRzKSwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKEluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlcjo6RXZhbHVh
dGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwg
IXJlc3VsdCkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I6OkNvbnRleHREZXN0cm95ZWQpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvIHBhcnNlZEVycm9yID0gd2Vh
a1RoaXMtPnBhcnNlSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3JGcm9tUmVzdWx0KHJlc3VsdC52YWx1
ZSgpKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQocGFy
c2VkRXJyb3IudmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjViNDBh
YjM5M2EwNTFmYjI1MjA1MDdlMzViYmRjZGVhZTE1ODU2YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIkluc3BlY3RvckV4dGVuc2lvblR5cGVzLmgiCisjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU1ZhbHVlOworfQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYkluc3BlY3RvclVJOworCitjbGFzcyBXZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIKKyAgICA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgor
ICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyKFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50Jik7CisgICAgfldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlcigpOworCisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOworCisg
ICAgLy8gV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyIElQQyBtZXNzYWdlcy4KKyAg
ICB2b2lkIHJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9v
bCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8Ym9vbCwgSW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+KT4mJik7CisKK3ByaXZhdGU6
CisgICAgT3B0aW9uYWw8SW5zcGVjdG9yRXh0ZW5zaW9uRXJyb3I+IHBhcnNlSW5zcGVjdG9yRXh0
ZW5zaW9uRXJyb3JGcm9tUmVzdWx0KEpTQzo6SlNWYWx1ZSByZXN1bHQpOworCisgICAgV2Vha1B0
cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gbV9mcm9udGVuZENsaWVudDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUl9F
WFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rv
ci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJv
bGxlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzc4ZWQ3NWNjYzNhOTc2ZWZlNzYwY2NiZjhk
OGM2MTA0NTQ2NWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorCittZXNzYWdlcyAtPiBXZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIgTm90UmVmQ291bnRlZCB7CisgICAgUmVnaXN0ZXJF
eHRlbnNpb24oU3RyaW5nIGV4dGVuc2lvbklELCBTdHJpbmcgZGlzcGxheU5hbWUpIC0+IChFeHBl
Y3RlZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5j
CisgICAgVW5yZWdpc3RlckV4dGVuc2lvbihTdHJpbmcgZXh0ZW5zaW9uSUQpIC0+IChFeHBlY3Rl
ZDxib29sLCBXZWJLaXQ6Okluc3BlY3RvckV4dGVuc2lvbkVycm9yPiByZXN1bHQpIEFzeW5jCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjA4ZDVjOWUxYTEwOTQ5ZWY4
OTJkOGMyODcyMmJiNjI5OTBkZWRmYS4uM2M5NzdhZjBkNTVlYzg3M2MzMjc0YTVmNDUxN2VhYzlk
NTg0YzZjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTExLTExICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUu
Y29tPgorCisgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4dGVuc2lvbnM6IEFkZCBfV0tJbnNw
ZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc4MworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjk5Njg3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAg
ICAgIEFkZCBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgbmV3IG1ldGhvZHMgb2YgdGhlIF9XS0luc3Bl
Y3RvckV4dGVuc2lvbkhvc3QgcHJvdG9jb2wuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTmV3IHRlc3QgZmlsZS4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRXh0ZW5z
aW9uSG9zdC5tbTogQWRkZWQuCisgICAgICAgIChyZXNldEdsb2JhbFN0YXRlKToKKyAgICAgICAg
KC1bVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IF93ZWJWaWV3OmRp
ZEF0dGFjaExvY2FsSW5zcGVjdG9yOl0pOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMTEtMTEg
IEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3MgIDxhbmdlbG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAg
VXNlIEZpbGVEb3dubG9hZCB0byBmZXRjaCBidWlsdCBwcm9kdWN0IGZyb20gbWFzdGVyCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNkMTI3NDUzOGE3MzZhMGNkYTU1MzRhYTM3MjZhZTY5MDNh
MGY0NjcuLjNkZjEyMDUyZWY5YTVhY2I4MGEzMWRiMzY4NDVkN2ZmMDQzMDU1OGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC04MzgsNiArODM4LDcgQEAKIAkJOTk4NEZBQ0MxQ0ZGQUY2MDAw
OEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZp
ZXdUZXh0SW5wdXQubW0gKi87IH07CiAJCTk5ODRGQUNFMUNGRkIwOTAwMDhEMTk4QyAvKiBlZGl0
YWJsZS1ib2R5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk4NEZBQ0QxQ0ZGQjAzODAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRt
bCAqLzsgfTsKIAkJOTk5OTEwOEIxRjM5M0M5NjAwOEFENDU1IC8qIENvcHlpbmcubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTk5MTA4QTFGMzkzQzhC
MDA4QUQ0NTUgLyogQ29weWluZy5tbSAqLzsgfTsKKwkJOTk5QjdFRTMyNTUxQzYzQjAwRjQ1MEE0
IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5OUI3RUUyMjU1MUM2M0IwMEY0NTBBNCAvKiBXS0luc3Bl
Y3RvckV4dGVuc2lvbkhvc3QubW0gKi87IH07CiAJCTk5QjRGOUM2MjRFREVEOTcwMDAyMkI4MiAv
KiBXS0luc3BlY3RvckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTlCNEY5QzUyNEVERUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVs
ZWdhdGUubW0gKi87IH07CiAJCTlCMDJFMEQ2MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1
bGF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUIwMkUwRDUyMzVGQTQ3RDAwNDA0NEIyIC8qIFRleHRNYW5pcHVsYXRpb24ubW0gKi87IH07CiAJ
CTlCMDc4NkE1MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dS
b290c09wZW5fQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCMDc4NkE0MUM1ODg1QzMwMEQxNTlFMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VB
bGxTaGFkb3dSb290c09wZW5fQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTI0NTYsNiArMjQ1Nyw3IEBA
CiAJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5wdXQubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdUZXh0SW5wdXQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5ODRGQUNEMUNGRkIwMzgwMDhEMTk4
QyAvKiBlZGl0YWJsZS1ib2R5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRp
dGFibGUtYm9keS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk5OTEwOEEx
RjM5M0M4QjAwOEFENDU1IC8qIENvcHlpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBDb3B5aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OTlCN0VFMjI1NTFDNjNCMDBGNDUwQTQgLyogV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JFeHRlbnNp
b25Ib3N0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OUI0RjlDNTI0RURFRDk2
MDAwMjJCODIgLyogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdLSW5zcGVjdG9yRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlCMDJFMEQ1MjM1RkE0N0QwMDQwNDRCMiAvKiBUZXh0TWFuaXB1bGF0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGV4dE1hbmlwdWxhdGlvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwNzg2QTIxQzU4ODMwRjAwRDE1OUUzIC8qIEluamVj
dGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290c09wZW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQyNiw2ICszNDI4LDcgQEAKIAkJCQkz
NzBDRTIyOTFGNTczNDM0MDBFNzQxMEIgLyogV0tDb250ZW50Vmlld1RhcmdldEZvckFjdGlvbi5t
bSAqLywKIAkJCQk1MUQxMjQ5NzFFNzYzQUY4MDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUu
bW0gKi8sCiAJCQkJOTlCNEY5QzUyNEVERUQ5NjAwMDIyQjgyIC8qIFdLSW5zcGVjdG9yRGVsZWdh
dGUubW0gKi8sCisJCQkJOTk5QjdFRTIyNTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0
ZW5zaW9uSG9zdC5tbSAqLywKIAkJCQlBNUE3MjlGMDFGNjIyQTlBMDBERTVBMjggLyogV0tOYXZp
Z2F0aW9uUmVzcG9uc2UubW0gKi8sCiAJCQkJREY0QjI3MzgyMUE0NzcyNzAwOUJEMUNBIC8qIFdL
TlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW0gKi8sCiAJCQkJMzc1RTBFMTUxRDY2
Njc0NDAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0gKi8sCkBAIC01NTY2LDYgKzU1NjksNyBAQAog
CQkJCTUxRDEyNDk4MUU3NjNCMDIwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RjFEMUE0MTFBRTYwMDQ0N0M0QyAvKiBXS0ltYWdlQ3JlYXRl
Q0dJbWFnZUNyYXNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk5QjRGOUM2MjRFREVEOTcwMDAy
MkI4MiAvKiBXS0luc3BlY3RvckRlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTk5QjdF
RTMyNTUxQzYzQjAwRjQ1MEE0IC8qIFdLSW5zcGVjdG9yRXh0ZW5zaW9uSG9zdC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1QTcyOUYxMUY2MjJBQTcwMERFNUEyOCAvKiBXS05hdmlnYXRpb25SZXNw
b25zZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCURGNEIyNzM5MjFBNDc3MjgwMDlCRDFDQSAvKiBX
S05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Mzc1RTBFMTcxRDY2Njc0NDAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNw
ZWN0b3JFeHRlbnNpb25Ib3N0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0luc3BlY3RvckV4dGVuc2lvbkhvc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVkYWNkNzljZGFk
Nzc4ZjkzNGEwOWNkODk0NTA0ZGVkYWRjYTY2OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JFeHRlbnNpb25Ib3N0Lm1t
CkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNp
bXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dL
UHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3Rvci5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0lu
c3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCisKK3N0YXRpYyBib29sIGRpZEF0dGFj
aExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBwZW5kaW5nQ2FsbGJh
Y2tXYXNDYWxsZWQgPSBmYWxzZTsKKworc3RhdGljIHZvaWQgcmVzZXRHbG9iYWxTdGF0ZSgpCit7
CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAgICBwZW5kaW5n
Q2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKK30KKworQGludGVyZmFjZSBVSURlbGVnYXRlRm9y
VGVzdGluZ0luc3BlY3RvckV4dGVuc2lvbkhvc3QgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gVUlEZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRl
bnNpb25Ib3N0CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0
YWNoTG9jYWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgoreworICAgIEVYUEVD
VF9FUSh3ZWJWaWV3Ll9pbnNwZWN0b3IsIGluc3BlY3Rvcik7CisgICAgZGlkQXR0YWNoTG9jYWxJ
bnNwZWN0b3JDYWxsZWQgPSB0cnVlOworfQorCitAZW5kCisKK1RFU1QoV0tJbnNwZWN0b3JFeHRl
bnNpb25Ib3N0LCBSZWdpc3RlckV4dGVuc2lvbikKK3sKKyAgICByZXNldEdsb2JhbFN0YXRlKCk7
CisKKyAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBuZXddKTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJl
bmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtVSURlbGVnYXRlRm9yVGVzdGluZ0luc3BlY3Rv
ckV4dGVuc2lvbkhvc3QgbmV3XSk7CisKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVs
ZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGhlYWQ+PHRpdGxl
PlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L3RpdGxlPjwvaGVhZD48Ym9keT48cD5GaWxsZXIg
Y29udGVudDwvcD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L2V4YW1wbGUuY29tLyJdXTsKKworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBzaG93XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVk
KTsKKworICAgIGF1dG8gZmlyc3RJRCA9IFtOU1VVSUQgVVVJRF0uVVVJRFN0cmluZzsKKyAgICBh
dXRvIHNlY29uZElEID0gW05TVVVJRCBVVUlEXS5VVUlEU3RyaW5nOworCisgICAgLy8gTm9ybWFs
IHJlZ2lzdHJhdGlvbi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAg
ICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6Zmlyc3RJRCBk
aXNwbGF5TmFtZTpAIkZpcnN0RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3Ig
KiBfTnVsbGFibGUgZXJyb3IsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRl
bnNpb24pIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9U
X05VTEwoZXh0ZW5zaW9uKTsKKworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxi
YWNrV2FzQ2FsbGVkKTsKKworICAgIC8vIERvdWJsZSByZWdpc3RyYXRpb24uCisgICAgcGVuZGlu
Z0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHJl
Z2lzdGVyRXh0ZW5zaW9uV2l0aElEOmZpcnN0SUQgZGlzcGxheU5hbWU6QCJGaXJzdEV4dGVuc2lv
biIgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9yLCBfV0tJbnNw
ZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7CisgICAgICAgIEVYUEVDVF9O
T1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9OVUxMKGV4dGVuc2lvbik7CisgICAgICAg
IEVYUEVDVF9UUlVFKFtlcnJvci5sb2NhbGl6ZWRGYWlsdXJlUmVhc29uIGNvbnRhaW5zU3RyaW5n
OkAiUmVnaXN0cmF0aW9uRmFpbGVkIl0pOworCisgICAgICAgIHBlbmRpbmdDYWxsYmFja1dhc0Nh
bGxlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwZW5k
aW5nQ2FsbGJhY2tXYXNDYWxsZWQpOworCisgICAgLy8gVHdvIHJlZ2lzdHJhdGlvbnMuCisgICAg
cGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0
b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOnNlY29uZElEIGRpc3BsYXlOYW1lOkAiU2Vjb25k
RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Is
IF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNpb24pIHsKKyAgICAgICAg
RVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZXh0ZW5zaW9uKTsK
KworICAgICAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKK30K
KworVEVTVChXS0luc3BlY3RvckV4dGVuc2lvbkhvc3QsIFVucmVnaXN0ZXJFeHRlbnNpb24pCit7
CisgICAgcmVzZXRHbG9iYWxTdGF0ZSgpOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgd2ViVmlld0Nv
bmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZ
RVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdD
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbVUlE
ZWxlZ2F0ZUZvclRlc3RpbmdJbnNwZWN0b3JFeHRlbnNpb25Ib3N0IG5ld10pOworCisgICAgW3dl
YlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2Fk
SFRNTFN0cmluZzpAIjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90aXRs
ZT48L2hlYWQ+PGJvZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07CisKKyAgICBbW3dlYlZp
ZXcgX2luc3BlY3Rvcl0gc2hvd107CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRB
dHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CisKKyAgICBhdXRvIGZpcnN0SUQgPSBbTlNVVUlE
IFVVSURdLlVVSURTdHJpbmc7CisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLSW5zcGVjdG9yRXh0
ZW5zaW9uPiBmb3VuZEV4dGVuc2lvbjsKKworICAgIC8vIFVucmVnaXN0ZXIgYSBrbm93biBleHRl
bnNpb24uCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJW
aWV3IF9pbnNwZWN0b3JdIHJlZ2lzdGVyRXh0ZW5zaW9uV2l0aElEOmZpcnN0SUQgZGlzcGxheU5h
bWU6QCJGaXJzdEV4dGVuc2lvbiIgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxh
YmxlIGVycm9yLCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gKiBfTnVsbGFibGUgZXh0ZW5zaW9uKSB7
CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGV4
dGVuc2lvbik7CisgICAgICAgIGZvdW5kRXh0ZW5zaW9uID0gZXh0ZW5zaW9uOworCisgICAgICAg
IFtbd2ViVmlldyBfaW5zcGVjdG9yXSB1bnJlZ2lzdGVyRXh0ZW5zaW9uOmZvdW5kRXh0ZW5zaW9u
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewor
ICAgICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworCisgICAgICAgICAgICBwZW5kaW5nQ2Fs
bGJhY2tXYXNDYWxsZWQgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dhc0NhbGxlZCk7CisgICAgRVhQRUNU
X05PVF9OVUxMKGZvdW5kRXh0ZW5zaW9uLmdldCgpKTsKKworICAgIC8vIFJlLXJlZ2lzdGVyIGFu
IGV4dGVuc2lvbi4KKyAgICBwZW5kaW5nQ2FsbGJhY2tXYXNDYWxsZWQgPSBmYWxzZTsKKyAgICBb
W3dlYlZpZXcgX2luc3BlY3Rvcl0gcmVnaXN0ZXJFeHRlbnNpb25XaXRoSUQ6Zmlyc3RJRCBkaXNw
bGF5TmFtZTpAIkZpcnN0RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBf
TnVsbGFibGUgZXJyb3IsIF9XS0luc3BlY3RvckV4dGVuc2lvbiAqIF9OdWxsYWJsZSBleHRlbnNp
b24pIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfTk9UX05V
TEwoZXh0ZW5zaW9uKTsKKyAgICAgICAgZm91bmRFeHRlbnNpb24gPSBleHRlbnNpb247CisKKyAg
ICAgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHVucmVnaXN0ZXJFeHRlbnNpb246Zm91bmRFeHRl
bnNpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVycm9y
KSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisKKyAgICAgICAgICAgIHBlbmRp
bmdDYWxsYmFja1dhc0NhbGxlZCA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkKTsKKyAgICBF
WFBFQ1RfTk9UX05VTEwoZm91bmRFeHRlbnNpb24uZ2V0KCkpOworCisgICAgLy8gVW5yZWdpc3Rl
ciBhbiBleHRlbnNpb24gdHdpY2UuCisgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gZmFs
c2U7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHVucmVnaXN0ZXJFeHRlbnNpb246Zm91bmRF
eHRlbnNpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGVy
cm9yKSB7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9U
UlVFKFtlcnJvci5sb2NhbGl6ZWRGYWlsdXJlUmVhc29uIGNvbnRhaW5zU3RyaW5nOkAiSW52YWxp
ZFJlcXVlc3QiXSk7CisKKyAgICAgICAgcGVuZGluZ0NhbGxiYWNrV2FzQ2FsbGVkID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnBlbmRpbmdDYWxsYmFja1dh
c0NhbGxlZCk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>