<?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>48720</bug_id>
          
          <creation_ts>2010-10-30 13:25:13 -0700</creation_ts>
          <short_desc>Customizable context menu support in WK2</short_desc>
          <delta_ts>2010-11-15 12:49:47 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>302339</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-10-30 13:25:13 -0700</bug_when>
    <thetext>After https://bugs.webkit.org/show_bug.cgi?id=48699 is resolved, customization from the embedding app will have to come via an injected bundle, and this bug tracks adding that mechanism.

This task in radar as &lt;rdar://problem/8613727&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306871</commentid>
    <comment_count>1</comment_count>
      <attachid>73391</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-09 10:42:59 -0800</bug_when>
    <thetext>Created attachment 73391
Add an injected bundle client to modify the default menu.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306877</commentid>
    <comment_count>2</comment_count>
      <attachid>73391</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-11-09 10:58:46 -0800</bug_when>
    <thetext>Comment on attachment 73391
Add an injected bundle client to modify the default menu.

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

&gt; WebCore/platform/ContextMenuItem.h:262
&gt;          ContextMenuItem(ContextMenu* subMenu = 0);
&gt;          ContextMenuItem(ContextMenuItemType type, ContextMenuAction action, const String&amp; title, ContextMenu* subMenu = 0);
&gt; +
&gt; +        ContextMenuItem(ContextMenuItemType type, ContextMenuAction action, const String&amp; title, bool enabled, bool checked);
&gt; +        ContextMenuItem(ContextMenuAction action, const String&amp; title, bool enabled, bool checked, Vector&lt;ContextMenuItem&gt;&amp; subMenuItems);

The argument names type and action should be omitted.

The word “submenu” is a single word, so it should not be capitalized “subMenu”.

Since this function does not adopt the contents of the submenu items vector, it should be const Vector&amp;, not Vector&amp;. Similarly, the submenu argument to the old constructors should be a const ContextMenu*.

&gt; WebCore/platform/ContextMenuItem.h:281
&gt;          void setSubMenu(ContextMenu*);
&gt; +        void setSubMenu(Vector&lt;ContextMenuItem&gt;&amp;);

The word “submenu” is a single word, so it should not be capitalized “subMenu”.

Since this function does not adopt the contents of the submenu items vector, it should be const Vector&amp;, not Vector&amp;.

Similarly, the other function should take a const ContextMenu&amp;, not a ContextMenu*.

&gt; WebCore/platform/mac/ContextMenuItemMac.mm:82
&gt; +    if (type == SeparatorType) {
&gt; +        m_platformDescription = [NSMenuItem separatorItem];
&gt; +        return;
&gt; +    }

Should we do any assertions about action, title, enabled, and checked here?

&gt; WebCore/platform/mac/ContextMenuItemMac.mm:93
&gt; +ContextMenuItem::ContextMenuItem(ContextMenuAction action, const String&amp; title, bool enabled, bool checked, Vector&lt;ContextMenuItem&gt;&amp; subMenuItems)

This should share more code with the other constructor. I suggest using a helper function.

&gt; WebCore/platform/mac/ContextMenuItemMac.mm:173
&gt; +        [subMenu insertItem:subMenuItems[i].releasePlatformDescription() atIndex:i];

I suggest just using addItem: instead of insertItem:atIndex: here.

&gt; WebCore/platform/mac/ContextMenuMac.mm:175
&gt; +        PlatformMenuItemDescription platformItem = menuItemVector[i].releasePlatformDescription();
&gt; +        [platformMenu addObject:platformItem];
&gt; +        [platformItem release];

It seems like the release (it should be “leak”) in releasePlatformDescription is not doing you any good here. Unfortunate.

&gt; WebCore/platform/mac/ContextMenuMac.mm:178
&gt; +    return [platformMenu autorelease];

Isn’t PlatformMenuDescription a RetainPtr? If so, then you could just construct one and you need not autorelease.

&gt; WebKit2/Shared/WebContextMenuItem.cpp:38
&gt; +WebContextMenuItem::WebContextMenuItem(const WebContextMenuItemData&amp; data)
&gt; +    : m_webContextMenuItemData(data)
&gt; +{
&gt; +}
&gt; +
&gt; +WebContextMenuItemData* WebContextMenuItem::data()
&gt; +{
&gt; +    return &amp;m_webContextMenuItemData;
&gt; +}

These seems like they should be inline in the header. Defining them outside the class definition is OK to keep the class definition cleaner, but these can just have “inline” and be in the header.

&gt; WebKit2/Shared/WebContextMenuItem.h:44
&gt; +    WebContextMenuItemData* data();
&gt; +private:

Missing blank line here.

&gt; WebKit2/Shared/WebContextMenuItemData.cpp:85
&gt; +        ContextMenuItem result(m_type, m_action, m_title, m_enabled, m_checked);
&gt; +        return result;

Why not do this in a single line?

&gt; WebKit2/Shared/WebContextMenuItemData.cpp:89
&gt; +    Vector&lt;ContextMenuItem&gt; subMenuItems = coreItems(m_submenu);
&gt; +    return ContextMenuItem(m_action, m_title, m_enabled, m_checked, subMenuItems);

Why not do this in a single line?

&gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:74
&gt; +    RefPtr&lt;ImmutableArray&gt; array = adoptRef(toImpl(newMenuWK));

I suggest putting this line closer to the getContextMenuFromDefaultMenu line because we don’t want the adopt to ever get separated from the out argument.

&gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:78
&gt; +    for (size_t i = 0; i &lt; array-&gt;size(); ++i) {

The repeated calls to array-&gt;size() are kinda slow. You should change this to get it only once.

&gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:85
&gt; +        newMenu.append(*(item-&gt;data()));

No need for the parentheses here. You should just leave them out.

&gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.h:34
&gt; +    class HitTestResult;

No reason to declare this. It’s not used in this header.

&gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.h:39
&gt; +class ImmutableArray;

No reason to declare this. It’s not used in this header.

&gt; WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:44
&gt; +    if (wkClient &amp;&amp; wkClient-&gt;version)
&gt; +        return;

Is this really right? If someone passes a newer version of WKBundlePageContextMenuClient we want to ignore it entirely? That doesn’t seem quite right to me. I guess all the other functions use that pattern. I’ll ask Sam about this.

&gt; WebKit2/WebProcess/WebCoreSupport/WebContextMenuClient.cpp:51
&gt; +    Vector&lt;ContextMenuItem&gt; coreItemVector = coreItems(newMenu);
&gt; +    return platformMenuDescription(coreItemVector);

This should be done in one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306989</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-09 14:38:29 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 73391 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73391&amp;action=review
&gt; 
&gt; &gt; WebCore/platform/ContextMenuItem.h:262
&gt; &gt;          ContextMenuItem(ContextMenu* subMenu = 0);
&gt; &gt;          ContextMenuItem(ContextMenuItemType type, ContextMenuAction action, const String&amp; title, ContextMenu* subMenu = 0);
&gt; &gt; +
&gt; &gt; +        ContextMenuItem(ContextMenuItemType type, ContextMenuAction action, const String&amp; title, bool enabled, bool checked);
&gt; &gt; +        ContextMenuItem(ContextMenuAction action, const String&amp; title, bool enabled, bool checked, Vector&lt;ContextMenuItem&gt;&amp; subMenuItems);
&gt;  ...
&gt; Since this function does not adopt the contents of the submenu items vector, it should be const Vector&amp;, not Vector&amp;. Similarly, the submenu argument to the old constructors should be a const ContextMenu*.

And...

&gt; &gt; WebCore/platform/ContextMenuItem.h:281
&gt; &gt;          void setSubMenu(ContextMenu*);
&gt; &gt; +        void setSubMenu(Vector&lt;ContextMenuItem&gt;&amp;);
&gt; ... 
&gt; Since this function does not adopt the contents of the submenu items vector, it should be const Vector&amp;, not Vector&amp;.

Unfortunately, to get the platform item out of a ContextMenuItem is a non-const operation.  


&gt; 
&gt; Similarly, the other function should take a const ContextMenu&amp;, not a ContextMenu*.
&gt; 
&gt; &gt; WebCore/platform/mac/ContextMenuItemMac.mm:82
&gt; &gt; +    if (type == SeparatorType) {
&gt; &gt; +        m_platformDescription = [NSMenuItem separatorItem];
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; 
&gt; Should we do any assertions about action, title, enabled, and checked here?

It&apos;s technically legal to have them here, even though they&apos;ll be lost on Mac.

&gt; 
&gt; &gt; WebCore/platform/mac/ContextMenuItemMac.mm:93
&gt; &gt; +ContextMenuItem::ContextMenuItem(ContextMenuAction action, const String&amp; title, bool enabled, bool checked, Vector&lt;ContextMenuItem&gt;&amp; subMenuItems)
&gt; 
&gt; This should share more code with the other constructor. I suggest using a helper function.

Will do.

&gt; 
&gt; &gt; WebCore/platform/mac/ContextMenuItemMac.mm:173
&gt; &gt; +        [subMenu insertItem:subMenuItems[i].releasePlatformDescription() atIndex:i];
&gt; 
&gt; I suggest just using addItem: instead of insertItem:atIndex: here.

Done

&gt; &gt; WebCore/platform/mac/ContextMenuMac.mm:175
&gt; &gt; +        PlatformMenuItemDescription platformItem = menuItemVector[i].releasePlatformDescription();
&gt; &gt; +        [platformMenu addObject:platformItem];
&gt; &gt; +        [platformItem release];
&gt; 
&gt; It seems like the release (it should be “leak”) in releasePlatformDescription is not doing you any good here. Unfortunate.

I agree.

&gt; &gt; WebCore/platform/mac/ContextMenuMac.mm:178
&gt; &gt; +    return [platformMenu autorelease];
&gt; 
&gt; Isn’t PlatformMenuDescription a RetainPtr? If so, then you could just construct one and you need not autorelease.

Nope:
typedef NSMutableArray* PlatformMenuDescription;

&gt; 
&gt; &gt; WebKit2/Shared/WebContextMenuItem.cpp:38
&gt; &gt; +WebContextMenuItem::WebContextMenuItem(const WebContextMenuItemData&amp; data)
&gt; &gt; +    : m_webContextMenuItemData(data)
&gt; &gt; +{
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +WebContextMenuItemData* WebContextMenuItem::data()
&gt; &gt; +{
&gt; &gt; +    return &amp;m_webContextMenuItemData;
&gt; &gt; +}
&gt; 
&gt; These seems like they should be inline in the header. Defining them outside the class definition is OK to keep the class definition cleaner, but these can just have “inline” and be in the header.

I agree on data(), but have precogg&apos;ed that the constructor will be more complex soon and I&apos;ll leave it in the .cpp file.
 
&gt; &gt; WebKit2/Shared/WebContextMenuItemData.cpp:85
&gt; &gt; +        ContextMenuItem result(m_type, m_action, m_title, m_enabled, m_checked);
&gt; &gt; +        return result;
&gt; 
&gt; Why not do this in a single line?

Because of the design of WebCore ContextMenuItems and their PlatformDescription nonsense, we have to work with non-const objects.

&gt; &gt; WebKit2/Shared/WebContextMenuItemData.cpp:89
&gt; &gt; +    Vector&lt;ContextMenuItem&gt; subMenuItems = coreItems(m_submenu);
&gt; &gt; +    return ContextMenuItem(m_action, m_title, m_enabled, m_checked, subMenuItems);
&gt; 
&gt; Why not do this in a single line?

Ditto

&gt; &gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:74
&gt; &gt; +    RefPtr&lt;ImmutableArray&gt; array = adoptRef(toImpl(newMenuWK));
&gt; 
&gt; I suggest putting this line closer to the getContextMenuFromDefaultMenu line because we don’t want the adopt to ever get separated from the out argument.

Done

&gt; &gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:78
&gt; &gt; +    for (size_t i = 0; i &lt; array-&gt;size(); ++i) {
&gt; 
&gt; The repeated calls to array-&gt;size() are kinda slow. You should change this to get it only once.

Done
 
&gt; &gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:85
&gt; &gt; +        newMenu.append(*(item-&gt;data()));
&gt; 
&gt; No need for the parentheses here. You should just leave them out.

Done

&gt; &gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.h:34
&gt; &gt; +    class HitTestResult;
&gt; 
&gt; No reason to declare this. It’s not used in this header.
&gt; 
&gt; &gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.h:39
&gt; &gt; +class ImmutableArray;
&gt; 
&gt; No reason to declare this. It’s not used in this header.

Correct and correct.
 
&gt; &gt; WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:44
&gt; &gt; +    if (wkClient &amp;&amp; wkClient-&gt;version)
&gt; &gt; +        return;
&gt; 
&gt; Is this really right? If someone passes a newer version of WKBundlePageContextMenuClient we want to ignore it entirely? That doesn’t seem quite right to me. I guess all the other functions use that pattern. I’ll ask Sam about this.

He&apos;s the best to answer :)

&gt; &gt; WebKit2/WebProcess/WebCoreSupport/WebContextMenuClient.cpp:51
&gt; &gt; +    Vector&lt;ContextMenuItem&gt; coreItemVector = coreItems(newMenu);
&gt; &gt; +    return platformMenuDescription(coreItemVector);
&gt; 
&gt; This should be done in one line.

See previous non-const answer  :(  

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307015</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-09 15:06:31 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/71682</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307039</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-09 16:11:09 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/71682 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
fast/events/tabindex-focus-blur-all.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308856</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-12 17:00:17 -0800</bug_when>
    <thetext>Patch that adds a UIProcess client and changes the injected bundle client to give a user-data out param is forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308876</commentid>
    <comment_count>7</comment_count>
      <attachid>73800</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-12 17:39:56 -0800</bug_when>
    <thetext>Created attachment 73800
Patch v1 (without ChangeLogs)

Patch.

I know there&apos;s no ChangeLogs here - I won&apos;t land without them.  Just trying to get the patch up before I head home for the night.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308884</commentid>
    <comment_count>8</comment_count>
      <attachid>73800</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-12 17:57:12 -0800</bug_when>
    <thetext>Comment on attachment 73800
Patch v1 (without ChangeLogs)

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

&gt; WebKit2/Shared/API/c/WKContextMenuItem.cpp:66
&gt; +    ImmutableArray* array = toImpl(submenuItems);
&gt; +    size_t size = array-&gt;size();
&gt; +    
&gt; +    Vector&lt;WebContextMenuItemData&gt; webSubmenu;
&gt; +    webSubmenu.reserveCapacity(size);
&gt; +    
&gt; +    for (size_t i = 0; i &lt; size; ++i) {
&gt; +        WebContextMenuItem* item = array-&gt;at&lt;WebContextMenuItem&gt;(i);
&gt; +        if (item)
&gt; +            webSubmenu.append(*item-&gt;data());
&gt; +    }
&gt; +    
&gt; +    return toAPI(WebContextMenuItem::create(WebContextMenuItemData(ContextMenuItemTagNoAction, toImpl(title)-&gt;string(), enabled, webSubmenu)).leakRef());

This should all be in WebContextMenuItem.h/cpp instead of in the API wrapper.

&gt; WebKit2/Shared/API/c/WKContextMenuItem.cpp:72
&gt; +    static WKContextMenuItemRef separatorItem = toAPI(WebContextMenuItem::create(WebContextMenuItemData(SeparatorType, ContextMenuItemTagNoAction, String(), true, false)).leakRef());
&gt; +    return separatorItem;

This static should be too.

&gt; WebKit2/Shared/API/c/WKContextMenuItem.cpp:117
&gt; +    WebContextMenuItemData* data = toImpl(itemRef)-&gt;data();
&gt; +    if (data-&gt;type() != SubmenuType)
&gt; +        return 0;
&gt; +    
&gt; +    const Vector&lt;WebContextMenuItemData&gt;&amp; submenuVector(data-&gt;submenu());
&gt; +    unsigned size = submenuVector.size();
&gt; +    
&gt; +    RefPtr&lt;MutableArray&gt; submenu = MutableArray::create();
&gt; +    submenu-&gt;reserveCapacity(size);
&gt; +    
&gt; +    for (unsigned i = 0; i &lt; size; ++i) {
&gt; +        RefPtr&lt;WebContextMenuItem&gt; item = WebContextMenuItem::create(submenuVector[i]);
&gt; +        submenu-&gt;append(item.get());
&gt; +    }
&gt; +    
&gt; +    return toAPI(submenu.release().leakRef());

Same here.

The WKArrayRef should probably be created by first generating a Vector&lt;RefPtr&lt;WebContextMenuItem&gt; &gt; and then using ImmutableArray::adopt().

&gt; WebKit2/Shared/API/c/WKContextMenuItem.h:28
&gt; +#ifndef WKContextMenuItemTags_h
&gt; +#define WKContextMenuItemTags_h
&gt; +

This header guard seems wrong.

&gt; WebKit2/Shared/API/c/WKContextMenuItem.h:54
&gt; +#endif /* WKContextMenuItemTags_h */

This one too.

&gt; WebKit2/Shared/API/c/WKSharedAPICast.h:413
&gt; +        return action;

This should probably have an explicit cast to make it clear what it is happening.

&gt; WebKit2/UIProcess/WebAPIContextMenuClient.h:31
&gt; +#include &lt;wtf/Vector.h&gt;

Can we avoid #including &lt;wtf/Vector.h&gt; here in favor of &lt;wtf/Forward.h&gt;

&gt; WebKit2/UIProcess/WebAPIContextMenuClient.h:40
&gt; +class WebAPIContextMenuClient : public APIClient&lt;WKPageContextMenuClient&gt; {
&gt; +public:

I don&apos;t like the API in this class name, can we replace it with Page?

&gt; WebKit2/UIProcess/WebPageProxy.cpp:1193
&gt; +    RefPtr&lt;APIObject&gt; userData;
&gt; +    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()-&gt;context());
&gt; +    if (!arguments-&gt;decode(messageDecoder))
&gt; +        return;
&gt; +        

Probably best to do this as the first thing in this function.

&gt; WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:28
&gt; +#include &quot;ImmutableDictionary.h&quot;

Why is this change needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309107</commentid>
    <comment_count>9</comment_count>
      <attachid>73391</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-14 14:25:59 -0800</bug_when>
    <thetext>Comment on attachment 73391
Add an injected bundle client to modify the default menu.

Cleared Darin Adler&apos;s review+ from obsolete attachment 73391 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309336</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-15 10:26:19 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 73800 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73800&amp;action=review
&gt; 
&gt; &gt; WebKit2/UIProcess/WebAPIContextMenuClient.h:31
&gt; &gt; +#include &lt;wtf/Vector.h&gt;
&gt; 
&gt; Can we avoid #including &lt;wtf/Vector.h&gt; here in favor of &lt;wtf/Forward.h&gt;

Sadly no.
 
&gt; &gt; WebKit2/UIProcess/mac/WebContextMenuProxyMac.mm:28
&gt; &gt; +#include &quot;ImmutableDictionary.h&quot;
&gt; 
&gt; Why is this change needed?

It&apos;s not.

New patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309351</commentid>
    <comment_count>11</comment_count>
      <attachid>73912</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-15 10:46:07 -0800</bug_when>
    <thetext>Created attachment 73912
v2 - Incorporated Sam&apos;s feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309395</commentid>
    <comment_count>12</comment_count>
      <attachid>73912</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-11-15 12:45:38 -0800</bug_when>
    <thetext>Comment on attachment 73912
v2 - Incorporated Sam&apos;s feedback

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

&gt; WebKit2/WebKit2.xcodeproj/project.pbxproj:197
&gt; +		5111CB02128E223B002203F7 /* untitled.h in Headers */ = {isa = PBXBuildFile; fileRef = 5111CB01128E223B002203F7 /* untitled.h */; };

What is this change about?

&gt; WebKit2/WebKit2.xcodeproj/project.pbxproj:763
&gt; +		5111CB01128E223B002203F7 /* untitled.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = untitled.h; sourceTree = &quot;&lt;group&gt;&quot;; };

What is this change about?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309398</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-11-15 12:48:50 -0800</bug_when>
    <thetext>Landed in r72024

Can close this one now - will file new bugs for any more followup</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73391</attachid>
            <date>2010-11-09 10:42:59 -0800</date>
            <delta_ts>2010-11-14 14:25:59 -0800</delta_ts>
            <desc>Add an injected bundle client to modify the default menu.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>43480</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTY0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMTEtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84NjEzNzI3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ4NzIwCisgICAgICAgIEN1c3RvbWl6YWJsZSBjb250ZXh0IG1lbnUgc3VwcG9y
dCBpbiBXZWJLaXQyLgorCisgICAgICAgIFZhcmlvdXMgV2ViQ29yZSBzdXBwb3J0IHRvIGFsbG93
IFdlYktpdDIgdG8gY3JlYXRlIG5ldyBDb250ZXh0TWVudUl0ZW1zIHdpdGgKKyAgICAgICAgdGhl
IGluZm9ybWF0aW9uIGl0IGhhcy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorCisgICAg
ICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0
TWVudUl0ZW0uaDoKKworICAgICAgICAqIHBsYXRmb3JtL21hYy9Db250ZXh0TWVudUl0ZW1NYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW06OnNldFN1Yk1lbnUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBs
YXRmb3JtTWVudURlc2NyaXB0aW9uKToKKworICAgICAgICAqIHBsYXRmb3JtL3F0L0NvbnRleHRN
ZW51SXRlbVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6Q29udGV4
dE1lbnVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbTo6c2V0U3ViTWVu
dSk6CisgICAgICAgICogcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbik6CisKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vQ29udGV4dE1lbnVJdGVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbTo6Q29udGV4dE1lbnVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bTo6c2V0U3ViTWVudSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NvbnRleHRNZW51V2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTWVudURlc2NyaXB0aW9uKToKKwogMjAxMC0x
MS0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3MTY0OCkKKysrIFdl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyMzMsMTEgKzEyMzMsMTQg
QEAgX19aTjdXZWJDb3JlMTFDb250ZXh0TWVudTIyc2V0UGxhdGZvcm1EZQogX19aTjdXZWJDb3Jl
MTJFdmVudEhhbmRsZXIyMHNlbmRDb250ZXh0TWVudUV2ZW50RVA3TlNFdmVudAogX19aTjdXZWJD
b3JlMTJFdmVudEhhbmRsZXIyMHNlbmRDb250ZXh0TWVudUV2ZW50RVJLTlNfMThQbGF0Zm9ybU1v
dXNlRXZlbnRFCiBfX1pON1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTI2cmVsZWFzZVBsYXRmb3Jt
RGVzY3JpcHRpb25FdgorX19aTjdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW1DMUVOU18xN0NvbnRl
eHRNZW51QWN0aW9uRVJLTjNXVEY2U3RyaW5nRWJiUk5TMl82VmVjdG9ySVMwX0xtMEVFRQogX19a
TjdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW1DMUVOU18xOUNvbnRleHRNZW51SXRlbVR5cGVFTlNf
MTdDb250ZXh0TWVudUFjdGlvbkVSS04zV1RGNlN0cmluZ0VQTlNfMTFDb250ZXh0TWVudUUKK19f
Wk43V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtQzFFTlNfMTlDb250ZXh0TWVudUl0ZW1UeXBlRU5T
XzE3Q29udGV4dE1lbnVBY3Rpb25FUktOM1dURjZTdHJpbmdFYmIKIF9fWk43V2ViQ29yZTE1Q29u
dGV4dE1lbnVJdGVtRDFFdgogX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIxNmNs
ZWFyQ29udGV4dE1lbnVFdgogX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIyM2Nv
bnRleHRNZW51SXRlbVNlbGVjdGVkRVBOU18xNUNvbnRleHRNZW51SXRlbUUKIF9fWk43V2ViQ29y
ZTIxY29udGV4dE1lbnVJdGVtVmVjdG9yRVAxNE5TTXV0YWJsZUFycmF5CitfX1pON1dlYkNvcmUy
M3BsYXRmb3JtTWVudURlc2NyaXB0aW9uRVJOM1dURjZWZWN0b3JJTlNfMTVDb250ZXh0TWVudUl0
ZW1FTG0wRUVFCiBfX1pON1dlYkNvcmU2Q2hyb21lMTVzaG93Q29udGV4dE1lbnVFdgogX19aTks3
V2ViQ29yZTExQ29udGV4dE1lbnUxOXBsYXRmb3JtRGVzY3JpcHRpb25FdgogX19aTks3V2ViQ29y
ZTExQ29udGV4dE1lbnUyMWNoZWNrT3JFbmFibGVJZk5lZWRlZEVSTlNfMTVDb250ZXh0TWVudUl0
ZW1FCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCShyZXZpc2lvbiA3MTY0OCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogVmVjdG9yPENvbnRleHRNZW51SXRlbT4g
Y29udGV4dE1lbnVJdGVtVmVjdG9yKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uKTsKK1BsYXRmb3Jt
TWVudURlc2NyaXB0aW9uIHBsYXRmb3JtTWVudURlc2NyaXB0aW9uKFZlY3RvcjxDb250ZXh0TWVu
dUl0ZW0+Jik7CiAKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCShyZXZp
c2lvbiA3MTY0OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI1Nyw2ICsyNTcsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IENvbnRleHRNZW51SXRlbShQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24pOwogICAgICAgICBD
b250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnUqIHN1Yk1lbnUgPSAwKTsKICAgICAgICAgQ29udGV4
dE1lbnVJdGVtKENvbnRleHRNZW51SXRlbVR5cGUgdHlwZSwgQ29udGV4dE1lbnVBY3Rpb24gYWN0
aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBDb250ZXh0TWVudSogc3ViTWVudSA9IDApOworCisg
ICAgICAgIENvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUsIENvbnRleHRN
ZW51QWN0aW9uIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgYm9vbCBlbmFibGVkLCBib29s
IGNoZWNrZWQpOworICAgICAgICBDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVBY3Rpb24gYWN0
aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCwgVmVj
dG9yPENvbnRleHRNZW51SXRlbT4mIHN1Yk1lbnVJdGVtcyk7CiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgICAgICBDb250ZXh0TWVudUl0ZW0oR3RrTWVudUl0ZW0qKTsKICNlbmRpZgpAQCAtMjc1LDYg
KzI3OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbiBwbGF0Zm9ybVN1Yk1lbnUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTdWJNZW51
KENvbnRleHRNZW51Kik7CisgICAgICAgIHZvaWQgc2V0U3ViTWVudShWZWN0b3I8Q29udGV4dE1l
bnVJdGVtPiYpOwogCiAgICAgICAgIHZvaWQgc2V0Q2hlY2tlZChib29sID0gdHJ1ZSk7CiAgICAg
ICAgIGJvb2wgY2hlY2tlZCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29u
dGV4dE1lbnVJdGVtTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0Nv
bnRleHRNZW51SXRlbU1hYy5tbQkocmV2aXNpb24gNzE2NDgpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21hYy9Db250ZXh0TWVudUl0ZW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDM1
IEBAIENvbnRleHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKENvbnRleHQKICAgICAgICAgc2V0
U3ViTWVudShzdWJNZW51KTsKIH0KIAorQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0o
Q29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgYm9vbCBjaGVja2VkKQoreworICAgIGlmICh0
eXBlID09IFNlcGFyYXRvclR5cGUpIHsKKyAgICAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0g
W05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBOU01lbnVJdGVtKiBpdGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOnRp
dGxlIGFjdGlvbjpuaWwga2V5RXF1aXZhbGVudDpAIiJdOworICAgIFtpdGVtIHNldEVuYWJsZWQ6
ZW5hYmxlZF07CisgICAgW2l0ZW0gc2V0U3RhdGU6Y2hlY2tlZCA/IE5TT25TdGF0ZSA6IE5TT2Zm
U3RhdGVdOworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IGl0ZW07CisgICAgW2l0ZW0gcmVs
ZWFzZV07CisKKyAgICBbbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmdldCgpIHNldFRhZzphY3Rpb25d
OworfQorCitDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUFjdGlv
biBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgYm9vbCBjaGVja2Vk
LCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgc3ViTWVudUl0ZW1zKQoreworICAgIE5TTWVudUl0
ZW0qIGl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRXaXRoVGl0bGU6dGl0bGUgYWN0aW9u
Om5pbCBrZXlFcXVpdmFsZW50OkAiIl07CisgICAgW2l0ZW0gc2V0RW5hYmxlZDplbmFibGVkXTsK
KyAgICBbaXRlbSBzZXRTdGF0ZTpjaGVja2VkID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07Cisg
ICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gaXRlbTsKKyAgICBbaXRlbSByZWxlYXNlXTsKKwor
ICAgIFttX3BsYXRmb3JtRGVzY3JpcHRpb24uZ2V0KCkgc2V0VGFnOmFjdGlvbl07CisgICAgCisg
ICAgc2V0U3ViTWVudShzdWJNZW51SXRlbXMpOworfQorCiBDb250ZXh0TWVudUl0ZW06On5Db250
ZXh0TWVudUl0ZW0oKQogewogfQpAQCAtMTM2LDYgKzE2NSwxNyBAQCB2b2lkIENvbnRleHRNZW51
SXRlbTo6c2V0U3ViTWVudShDb250ZXh0CiAgICAgW3N1Yk1lbnUgcmVsZWFzZV07CiB9CiAKK3Zv
aWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBz
dWJNZW51SXRlbXMpCit7CisgICAgTlNNZW51KiBzdWJNZW51ID0gW1tOU01lbnUgYWxsb2NdIGlu
aXRdOworICAgIFtzdWJNZW51IHNldEF1dG9lbmFibGVzSXRlbXM6Tk9dOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzdWJNZW51SXRlbXMuc2l6ZSgpOyArK2kpCisgICAgICAgIFtzdWJN
ZW51IGluc2VydEl0ZW06c3ViTWVudUl0ZW1zW2ldLnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9u
KCkgYXRJbmRleDppXTsKKyAgICAgICAgCisgICAgW21fcGxhdGZvcm1EZXNjcmlwdGlvbi5nZXQo
KSBzZXRTdWJtZW51OnN1Yk1lbnVdOworICAgIFtzdWJNZW51IHJlbGVhc2VdOworfQorCiB2b2lk
IENvbnRleHRNZW51SXRlbTo6c2V0Q2hlY2tlZChib29sIGNoZWNrZWQpCiB7CiAgICAgaWYgKGNo
ZWNrZWQpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkocmV2aXNp
b24gNzE2NDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db250ZXh0TWVudU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTY2LDYgKzE2NiwxOCBAQCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBj
b250ZXh0TWVudUl0ZW1WCiAgICAgcmV0dXJuIGl0ZW1zOwogfQogCitQbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbiBwbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbihWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYg
bWVudUl0ZW1WZWN0b3IpCit7CisgICAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gcGxhdGZvcm1N
ZW51ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTptZW51SXRlbVZl
Y3Rvci5zaXplKCldOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtZW51SXRlbVZlY3Rv
ci5zaXplKCk7ICsraSkgeworICAgICAgICBQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24gcGxh
dGZvcm1JdGVtID0gbWVudUl0ZW1WZWN0b3JbaV0ucmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24o
KTsKKyAgICAgICAgW3BsYXRmb3JtTWVudSBhZGRPYmplY3Q6cGxhdGZvcm1JdGVtXTsKKyAgICAg
ICAgW3BsYXRmb3JtSXRlbSByZWxlYXNlXTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFtwbGF0
Zm9ybU1lbnUgYXV0b3JlbGVhc2VdOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQv
Q29udGV4dE1lbnVJdGVtUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQv
Q29udGV4dE1lbnVJdGVtUXQuY3BwCShyZXZpc2lvbiA3MTY0OCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vcXQvQ29udGV4dE1lbnVJdGVtUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwx
NiBAQCBDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0CiAgICAgICAgIHNl
dFN1Yk1lbnUoc3ViTWVudSk7CiB9CiAKK0NvbnRleHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVt
KENvbnRleHRNZW51SXRlbVR5cGUsIENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBi
b29sLCBib29sKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKK30KKworQ29udGV4dE1lbnVJ
dGVtOjpDb250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVBY3Rpb24sIGNvbnN0IFN0cmluZyYsIGJv
b2wsIGJvb2wsIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JikKK3sKKyAgICAvLyBGSVhNRTogSW1w
bGVtZW50Cit9CisKIENvbnRleHRNZW51SXRlbTo6fkNvbnRleHRNZW51SXRlbSgpCiB7CiB9CkBA
IC05OSw2ICsxMDksMTEgQEAgdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFN1Yk1lbnUoQ29udGV4
dAogICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi5zdWJNZW51SXRlbXMgPSAqbWVudS0+cGxhdGZv
cm1EZXNjcmlwdGlvbigpOwogfQogCit2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0U3ViTWVudShW
ZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorfQor
CiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0Q2hlY2tlZChib29sIG9uKQogewogICAgIG1fcGxh
dGZvcm1EZXNjcmlwdGlvbi5jaGVja2VkID0gb247CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0
L0NvbnRleHRNZW51UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29u
dGV4dE1lbnVRdC5jcHAJKHJldmlzaW9uIDcxNjQ4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9D
b250ZXh0TWVudVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNSArODAsMTEgQEAgVmVjdG9y
PENvbnRleHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtVgogICAgIHJldHVybiBWZWN0b3I8Q29u
dGV4dE1lbnVJdGVtPigpOwogfQogCitQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBwbGF0Zm9ybU1l
bnVEZXNjcmlwdGlvbihWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgbWVudUl0ZW1WZWN0b3IpCit7
CisgICAgLy8gRklYTUUgLSBJbXBsZW1lbnQgICAgCisgICAgcmV0dXJuIDA7Cit9CisKIH0KIC8v
IHZpbTogdHM9NCBzdz00IGV0CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3dpbi9Db250ZXh0TWVu
dUl0ZW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL0NvbnRleHRN
ZW51SXRlbVdpbi5jcHAJKHJldmlzaW9uIDcxNjQ4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q29udGV4dE1lbnVJdGVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsMTYgQEAg
Q29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oQ29udGV4dAogICAgIG1fcGxhdGZvcm1E
ZXNjcmlwdGlvbi0+ZHdUeXBlRGF0YSA9IHdjc2R1cCh0LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkpOwogfQogCitDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0
TWVudUl0ZW1UeXBlLCBDb250ZXh0TWVudUFjdGlvbiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgYm9v
bCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50Cit9CisKK0NvbnRleHRNZW51SXRlbTo6Q29u
dGV4dE1lbnVJdGVtKENvbnRleHRNZW51QWN0aW9uLCBjb25zdCBTdHJpbmcmLCBib29sLCBib29s
LCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudAor
fQorCiBDb250ZXh0TWVudUl0ZW06On5Db250ZXh0TWVudUl0ZW0oKQogewogICAgIGlmIChtX3Bs
YXRmb3JtRGVzY3JpcHRpb24pIHsKQEAgLTE3Miw2ICsxODIsMTEgQEAgdm9pZCBDb250ZXh0TWVu
dUl0ZW06OnNldFN1Yk1lbnUoQ29udGV4dAogICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi0+aFN1
Yk1lbnUgPSBzdWJNZW51LT5yZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpOwogfQogCit2b2lk
IENvbnRleHRNZW51SXRlbTo6c2V0U3ViTWVudShWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYpCit7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudAorfQorCiB2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0
Q2hlY2tlZChib29sIGNoZWNrZWQpCiB7CiAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLT5mTWFz
ayB8PSBNSUlNX1NUQVRFOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ29udGV4dE1lbnVX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd2luL0NvbnRleHRNZW51V2lu
LmNwcAkocmV2aXNpb24gNzE2NDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3dpbi9Db250ZXh0TWVu
dVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw0ICsxNjEsMTAgQEAgVmVjdG9yPENvbnRl
eHRNZW51SXRlbT4gY29udGV4dE1lbnVJdGVtVgogICAgIHJldHVybiBWZWN0b3I8Q29udGV4dE1l
bnVJdGVtPigpOwogfQogCitQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBwbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbihWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgbWVudUl0ZW1WZWN0b3IpCit7CisgICAg
Ly8gRklYTUUgLSBJbXBsZW1lbnQgICAgCisgICAgcmV0dXJuIDA7Cit9CisKIH0KSW5kZXg6IFdl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lv
biA3MTY0OCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NjEgQEAKKzIwMTAtMTEtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgPHJk
YXI6Ly9wcm9ibGVtLzg2MTM3Mjc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDg3MjAKKyAgICAgICAgQ3VzdG9taXphYmxlIGNvbnRleHQgbWVudSBzdXBwb3J0
IGluIFdlYktpdDIuCisKKyAgICAgICAgVGhpcyBhZGRzIGEgQnVuZGxlUGFnZUNvbnRleHRNZW51
IGNsaWVudCBhbmQgbGV0cyBXZWJLaXQyIGNvbnN1bHQgaXQgd2l0aCB0aGUgcHJvcG9zZWQKKyAg
ICAgICAgbGlzdCBvZiBXZWJDb250ZXh0TWVudUl0ZW1zLgorICAgICAgICBUaGVyZSBpcyBubyBy
ZWFsaXN0aWMgQVBJIGZvciB0aGUgZW1iZWRkaW5nIGFwcCB0byBhY3R1YWxseSBpbnNwZWN0IG9y
IGNyZWF0ZSBuZXcKKyAgICAgICAgV2ViQ29udGV4dE1lbnVJdGVtcyAod2lsbCBiZSAiV0tDb250
ZXh0TWVudUl0ZW0iKSBhbmQgdGhhdCBhYmlsaXR5IHdpbGwgY29tZSBsYXRlci4KKworICAgICAg
ICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKKyAgICAgICAgKiBQbGF0Zm9y
bS9Mb2dnaW5nLmNwcDoKKyAgICAgICAgKGluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9Mb2dnaW5nLmg6CisKKyAgICAgICAgKiBTaGFyZWQvQVBJ
T2JqZWN0Lmg6CisKKyAgICAgICAgKiBTaGFyZWQvTXV0YWJsZUFycmF5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TXV0YWJsZUFycmF5OjpyZXNlcnZlQ2FwYWNpdHkpOgorICAgICAgICAqIFNoYXJl
ZC9NdXRhYmxlQXJyYXkuaDoKKworICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpXZWJDb250
ZXh0TWVudUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW06OmRhdGEp
OgorICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29udGV4dE1lbnVJdGVtOjp0eXBlKToKKworICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0
TWVudUl0ZW1EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0
YTo6Y29yZSk6CisgICAgICAgIChXZWJLaXQ6OmtpdEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6
Y29yZUl0ZW1zKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oOgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRl
eHRNZW51Q2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
Ojppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50Lmg6IEFkZGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xp
ZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6IENhbGwgdGhyb3VnaCB0byB0aGUg
aW5qZWN0ZWQgYnVuZGxlIGNsaWVudAorICAgICAgICAgIHdpdGggdGhlIGRlZmF1bHQgaXRlbXMg
YW5kIGNvbnZlcnQgdGhlIHJldHVybmVkIGl0ZW1zIGJhY2sgZm9yIFdlYkNvcmUgdG8gdXNlLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6aW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCk6CisKIDIwMTAtMTEt
MDkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3Rh
bXBlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24gNzE2NDgpCisrKyBXZWJLaXQyL1dl
YktpdDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNiArMjI4LDcgQEAgSEVBREVSUyArPSBc
CiAgICAgU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmggXAogICAgIFNoYXJlZC9WaXNpdGVkTGlu
a1RhYmxlLmggXAogICAgIFNoYXJlZC9XZWJDZXJ0aWZpY2F0ZUluZm8uaCBcCisgICAgU2hhcmVk
L1dlYkNvbnRleHRNZW51SXRlbS5oIFwKICAgICBTaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0
YS5oIFwKICAgICBTaGFyZWQvV2ViRXZlbnQuaCBcCiAgICAgU2hhcmVkL1dlYkVycm9yLmggXApA
QCAtMzE3LDYgKzMxOCw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBcCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKyAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5o
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVVJQ2xp
ZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZC5oIFwKQEAgLTQwMSw2ICs0MDMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQv
cXQvV2ViVVJMUmVzcG9uc2VRdC5jcHAgXAogICAgIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURh
dGEuY3BwIFwKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAgXAorICAgIFNoYXJlZC9X
ZWJDb250ZXh0TWVudUl0ZW0uY3BwIFwKICAgICBTaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0
YS5jcHAgXAogICAgIFNoYXJlZC9XZWJFcnJvci5jcHAgXAogICAgIFNoYXJlZC9XZWJFdmVudC5j
cHAgXApAQCAtNDg3LDcgKzQ5MCw4IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwK
LSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dC5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcCBcICAgIAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5jcHAgXAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50LmNwcCBcCkluZGV4OiBXZWJLaXQyL1BsYXRmb3JtL0xvZ2dpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5jcHAJKHJldmlzaW9uIDcxNjQ4KQorKysgV2Vi
S2l0Mi9QbGF0Zm9ybS9Mb2dnaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogI2lmICFMT0dfRElTQUJMRUQKIAogV1RGTG9nQ2hhbm5lbCBMb2dTZXNzaW9uU3RhdGUgPSB7
IDB4MDAwMDAwMDEsICJXZWJLaXQyTG9nTGV2ZWwiLCBXVEZMb2dDaGFubmVsT24gfTsKK1dURkxv
Z0NoYW5uZWwgTG9nQ29udGV4dE1lbnUgID0geyAweDAwMDAwMDAyLCAiV2ViS2l0MkxvZ0xldmVs
IiwgV1RGTG9nQ2hhbm5lbE9uIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplTG9n
Q2hhbm5lbChXVEZMb2dDaGFubmVsKiBjaGFubmVsKQogewpAQCAtNDEsNiArNDIsNyBAQCB2b2lk
IGluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgcmV0dXJuOwogICAg
IGhhdmVJbml0aWFsaXplZExvZ0NoYW5uZWxzID0gdHJ1ZTsKIAorICAgIGluaXRpYWxpemVMb2dD
aGFubmVsKCZMb2dDb250ZXh0TWVudSk7CiAgICAgaW5pdGlhbGl6ZUxvZ0NoYW5uZWwoJkxvZ1Nl
c3Npb25TdGF0ZSk7CiB9CiAKSW5kZXg6IFdlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCShyZXZpc2lvbiA3MTY0OCkKKysr
IFdlYktpdDIvUGxhdGZvcm0vTG9nZ2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBACiAKIEVYVEVSTl9DX0JFR0lOCiAKK2V4dGVybiBXVEZMb2dDaGFubmVsIExvZ0NvbnRleHRN
ZW51OwogZXh0ZXJuIFdURkxvZ0NoYW5uZWwgTG9nU2Vzc2lvblN0YXRlOwogCiB2b2lkIGluaXRp
YWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KHZvaWQpOwpJbmRleDogV2ViS2l0Mi9TaGFyZWQv
QVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHJl
dmlzaW9uIDcxNjQ4KQorKysgV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlTnVsbCA9IDAsCiAgICAg
ICAgIFR5cGVBcnJheSwKICAgICAgICAgVHlwZUNlcnRpZmljYXRlSW5mbywKKyAgICAgICAgVHlw
ZUNvbnRleHRNZW51SXRlbSwKICAgICAgICAgVHlwZURhdGEsCiAgICAgICAgIFR5cGVEaWN0aW9u
YXJ5LAogICAgICAgICBUeXBlRXJyb3IsCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9NdXRhYmxlQXJy
YXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL011dGFibGVBcnJheS5jcHAJKHJl
dmlzaW9uIDcxNjQ4KQorKysgV2ViS2l0Mi9TaGFyZWQvTXV0YWJsZUFycmF5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsNCArNDAsOSBAQCB2b2lkIE11dGFibGVBcnJheTo6YXBwZW5kKEFQSU9i
amVjdCogaXRlCiAgICAgbV9lbnRyaWVzLmFwcGVuZChpdGVtKTsKIH0KIAordm9pZCBNdXRhYmxl
QXJyYXk6OnJlc2VydmVDYXBhY2l0eSh1bnNpZ25lZCBjYXBhY2l0eSkKK3sKKyAgICBtX2VudHJp
ZXMucmVzZXJ2ZUNhcGFjaXR5KGNhcGFjaXR5KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9NdXRhYmxlQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1NoYXJlZC9NdXRhYmxlQXJyYXkuaAkocmV2aXNpb24gNzE2NDgpCisrKyBXZWJLaXQyL1No
YXJlZC9NdXRhYmxlQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBwdWJs
aWM6CiAgICAgfk11dGFibGVBcnJheSgpOwogCiAgICAgdm9pZCBhcHBlbmQoQVBJT2JqZWN0Kik7
CisgICAgdm9pZCByZXNlcnZlQ2FwYWNpdHkodW5zaWduZWQpOwogCiAgICAgdmlydHVhbCBib29s
IGlzTXV0YWJsZSgpIHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29udGV4dE1lbnVJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJDb250
ZXh0TWVudUl0ZW0uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4
dE1lbnVJdGVtLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisg
CisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJDb250ZXh0TWVudUl0ZW06OldlYkNvbnRleHRNZW51SXRlbShjb25zdCBXZWJDb250ZXh0
TWVudUl0ZW1EYXRhJiBkYXRhKQorICAgIDogbV93ZWJDb250ZXh0TWVudUl0ZW1EYXRhKGRhdGEp
Cit7Cit9CisKK1dlYkNvbnRleHRNZW51SXRlbURhdGEqIFdlYkNvbnRleHRNZW51SXRlbTo6ZGF0
YSgpCit7CisgICAgcmV0dXJuICZtX3dlYkNvbnRleHRNZW51SXRlbURhdGE7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0
ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAko
cmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb250ZXh0
TWVudUl0ZW1faAorI2RlZmluZSBXZWJDb250ZXh0TWVudUl0ZW1faAorCisjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtIDogcHVibGljIEFQSU9iamVj
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVDb250ZXh0
TWVudUl0ZW07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+IGNy
ZWF0ZShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBkYXRhKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0TWVudUl0ZW0oZGF0YSkpOworICAgIH0KKyAg
ICAKKyAgICBXZWJDb250ZXh0TWVudUl0ZW1EYXRhKiBkYXRhKCk7Citwcml2YXRlOgorICAgIFdl
YkNvbnRleHRNZW51SXRlbShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CisgICAgCisg
ICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisgICAgCisg
ICAgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSBtX3dlYkNvbnRleHRNZW51SXRlbURhdGE7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkNvbnRleHRNZW51SXRlbV9o
CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcAkocmV2aXNp
b24gNzE2NDgpCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViQ29udGV4dE1lbnVJdGVtRGF0
YTo6V2ViQ29udGV4dE1lbnVJdGVtRGF0YSgpCkBAIC03Niw2ICs3OCwxNyBAQCBXZWJDb250ZXh0
TWVudUl0ZW1EYXRhOjpXZWJDb250ZXh0TWVudUl0CiAgICAgbV9jaGVja2VkID0gaXRlbS5jaGVj
a2VkKCk7CiB9CiAKK0NvbnRleHRNZW51SXRlbSBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOjpjb3Jl
KCkgY29uc3QKK3sKKyAgICBpZiAobV90eXBlICE9IFN1Ym1lbnVUeXBlKSB7CisgICAgICAgIENv
bnRleHRNZW51SXRlbSByZXN1bHQobV90eXBlLCBtX2FjdGlvbiwgbV90aXRsZSwgbV9lbmFibGVk
LCBtX2NoZWNrZWQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBW
ZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBzdWJNZW51SXRlbXMgPSBjb3JlSXRlbXMobV9zdWJtZW51
KTsKKyAgICByZXR1cm4gQ29udGV4dE1lbnVJdGVtKG1fYWN0aW9uLCBtX3RpdGxlLCBtX2VuYWJs
ZWQsIG1fY2hlY2tlZCwgc3ViTWVudUl0ZW1zKTsKK30KKwogdm9pZCBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAog
ewogICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bV90eXBlKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fYWN0aW9uKSwgbV90aXRsZSwgbV9jaGVj
a2VkLCBtX2VuYWJsZWQsIG1fc3VibWVudSkpOwpAQCAtMTEwLDEyICsxMjMsMjIgQEAgYm9vbCBX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhOjpkZWNvZGUoQ29yZQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1WZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4ga2l0SXRlbXMoVmVjdG9yPFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbT4mIGNvcmVJdGVtcywgV2ViQ29yZTo6Q29udGV4dE1lbnUqIG1lbnUp
CitWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4ga2l0SXRlbXMoVmVjdG9yPFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbT4mIGNvcmVJdGVtVmVjdG9yLCBXZWJDb3JlOjpDb250ZXh0TWVudSog
bWVudSkKIHsKICAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gcmVzdWx0OwotICAg
IHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkoY29yZUl0ZW1zLnNpemUoKSk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGNvcmVJdGVtcy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZChXZWJDb250ZXh0TWVudUl0ZW1EYXRhKGNvcmVJdGVtc1tpXSwgbWVudSkpOworICAgIHJl
c3VsdC5yZXNlcnZlQ2FwYWNpdHkoY29yZUl0ZW1WZWN0b3Iuc2l6ZSgpKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY29yZUl0ZW1WZWN0b3Iuc2l6ZSgpOyArK2kpCisgICAgICAgIHJl
c3VsdC5hcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtRGF0YShjb3JlSXRlbVZlY3RvcltpXSwgbWVu
dSkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1ZlY3RvcjxDb250ZXh0TWVudUl0
ZW0+IGNvcmVJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGtpdEl0
ZW1WZWN0b3IpCit7CisgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gcmVzdWx0OworICAgIHJl
c3VsdC5yZXNlcnZlQ2FwYWNpdHkoa2l0SXRlbVZlY3Rvci5zaXplKCkpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBraXRJdGVtVmVjdG9yLnNpemUoKTsgKytpKQorICAgICAgICByZXN1
bHQuYXBwZW5kKGtpdEl0ZW1WZWN0b3JbaV0uY29yZSgpKTsKICAgICAKICAgICByZXR1cm4gcmVz
dWx0OwogfQpJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbURhdGEuaAkocmV2
aXNpb24gNzE2NDgpCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tlZDsgfQogICAgIGNvbnN0IFZlY3RvcjxXZWJDb250
ZXh0TWVudUl0ZW1EYXRhPiYgc3VibWVudSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VibWVudTsgfQog
ICAgIAorICAgIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSBjb3JlKCkgY29uc3Q7CisgICAgCiAg
ICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CiAgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFdlYkNvbnRleHRNZW51
SXRlbURhdGEmKTsKIApAQCAtNjcsNiArNjksNyBAQCBwcml2YXRlOgogfTsKIAogVmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbURhdGE+IGtpdEl0ZW1zKFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW0+JiwgV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKK1ZlY3RvcjxXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW0+IGNvcmVJdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3MTY0OCkKKysrIFdlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTky
LDEwIEBACiAJCTFDOEUyQTM2MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJB
MzIxMjc3ODUyNDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvck1lc3NhZ2VzLmggKi87IH07CiAJCTUx
MEZCQjlBMTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk4MTI4OEM5
NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLzsgfTsKIAkJNTEwRkJC
OUIxMjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk5MTI4OEM5NUUwMEFG
RkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggKi87IH07CisJCTUxMjkzNUQ3MTI4OEQx
OTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1RDUxMjg4RDE5NDAwQTRCNjk1IC8qIFdl
YkNvbnRleHRNZW51SXRlbS5jcHAgKi87IH07CisJCTUxMjkzNUQ4MTI4OEQxOTQwMEE0QjY5NSAv
KiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0
ZW0uaCAqLzsgfTsKKwkJNTEyOTM1RTMxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMjkzNUUxMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi87IH07CisJCTUxMjkzNUU0MTI4OEQ5NzgwMEE0
QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1RTIxMjg4RDk3ODAwQTRC
Njk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTUx
NTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogV2Vi
RGF0YS5oICovOyB9OwogCQk1MTZBNEE1RDEyMEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkE0QTVCMTIw
QTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovOyB9OwogCQk1MTg3MUI1QjEyN0NCODlEMDBG
NzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRN
ZW51LmNwcCAqLzsgfTsKQEAgLTczNyw2ICs3NDEsMTAgQEAKIAkJMzJEQkNGNUUwMzcwQURFRTAw
QzkxNzgzIC8qIFdlYktpdDJQcmVmaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViS2l0MlByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBGQkI5
ODEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRkJCOTkxMjg4Qzk1RTAwQUZGREY0IC8q
IFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTI5MzVENTEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAv
KiBXZWJDb250ZXh0TWVudUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ29udGV4dE1lbnVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMjkz
NUUxMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxMjkzNUUyMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogV2ViRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTM2Nyw2ICsxMzc1LDggQEAKIAkJCQkxQTBGMjlDQTEyMEIz
NzE2MDA1M0QxQjkgLyogVmlzaXRlZExpbmtUYWJsZS5oICovLAogCQkJCUJDMUREN0IxMTE0REMz
OTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAqLywKIAkJCQlCQ0Y1MDcyNjEy
NDMyOUFBMDA1OTU1QUUgLyogV2ViQ2VydGlmaWNhdGVJbmZvLmggKi8sCisJCQkJNTEyOTM1RDUx
Mjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5jcHAgKi8sCisJCQkJNTEyOTM1
RDYxMjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oICovLAogCQkJCTUxMEZC
Qjk4MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLywKIAkJ
CQk1MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oICov
LAogCQkJCTUxNTc4QjgyMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi8sCkBAIC0xODEy
LDYgKzE4MjIsOCBAQAogCQkJCTkzNUVFQjkyMTI3NzYxNUQwMDMzMjJCOCAvKiBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLywKIAkJCQlCQzQ5ODYxNzEyNEQxMEUyMDBEODM0
RTEgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCAqLywKIAkJCQlCQzQ5ODYxNjEy
NEQxMEUyMDBEODM0RTEgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggKi8sCisJCQkJ
NTEyOTM1RTExMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50LmNwcCAqLywKKwkJCQk1MTI5MzVFMjEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCQlFMUVFNTNFNjExRjhDRkZCMDBD
Q0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmNwcCAqLywKIAkJCQlFMUVF
NTNEQzExRjhDRjlGMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmgg
Ki8sCiAJCQkJQkMxNEUxMDcxMjBCOTA1RTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlUGFnZUZv
cm1DbGllbnQuY3BwICovLApAQCAtMjM1OCw2ICsyMzcwLDggQEAKIAkJCQk1MTBGQkI5QjEyODhD
OTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFCN0Q0Q0ExMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBQjdENjFBMTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMjkzNUQ4MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJD
b250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMjkzNUU0MTI4OEQ5NzgwMEE0
QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFCN0Q3MkMxMjg4Q0FBRDAwQ0ZEMDhDIC8qIFdlYkRvd25sb2FkQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9h
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtMjcwOCw2ICsyNzIyLDggQEAKIAkJCQk1MTBG
QkI5QTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUI3RDRDQjEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxv
YWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTI5MzVENzEy
ODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxMjkzNUUzMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDcyRDEyODhDQUFEMDBDRkQw
OEMgLyogV2ViRG93bmxvYWRDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q3OEUx
Mjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudC5oIgorCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVk
ZSAiTXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVJdGVtLmgiCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
OjpJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCgpCit7CisgICAgaW5pdGlhbGl6
ZSgwKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudDo6aW5p
dGlhbGl6ZShXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCogY2xpZW50KQoreworICAgIGlm
IChjbGllbnQgJiYgIWNsaWVudC0+dmVyc2lvbikKKyAgICAgICAgbV9jbGllbnQgPSAqY2xpZW50
OworICAgIGVsc2UgCisgICAgICAgIG1lbXNldCgmbV9jbGllbnQsIDAsIHNpemVvZihtX2NsaWVu
dCkpOworfQorCitib29sIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50OjpnZXRD
dXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpDb250ZXh0
TWVudSogZGVmYXVsdE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgbmV3TWVu
dSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVh
dGUoZGVmYXVsdE1lbnUtPmhpdFRlc3RSZXN1bHQoKSk7CisgICAgCisgICAgVmVjdG9yPFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbT4gY29yZUl0ZW1zID0gV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVt
VmVjdG9yKGRlZmF1bHRNZW51LT5wbGF0Zm9ybURlc2NyaXB0aW9uKCkpOworICAgIFZlY3RvcjxX
ZWJDb250ZXh0TWVudUl0ZW1EYXRhPiB3ZWJJdGVtcyA9IGtpdEl0ZW1zKGNvcmVJdGVtcywgZGVm
YXVsdE1lbnUpOworCisgICAgUmVmUHRyPE11dGFibGVBcnJheT4gZGVmYXVsdE1lbnVBcnJheSA9
IE11dGFibGVBcnJheTo6Y3JlYXRlKCk7CisgICAgZGVmYXVsdE1lbnVBcnJheS0+cmVzZXJ2ZUNh
cGFjaXR5KHdlYkl0ZW1zLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdl
Ykl0ZW1zLnNpemUoKTsgKytpKQorICAgICAgICBkZWZhdWx0TWVudUFycmF5LT5hcHBlbmQoV2Vi
Q29udGV4dE1lbnVJdGVtOjpjcmVhdGUod2ViSXRlbXNbaV0pLmdldCgpKTsKKworICAgIFdLQXJy
YXlSZWYgbmV3TWVudVdLID0gMDsKKyAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21EZWZh
dWx0TWVudSh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5nZXQoKSksIHRvQVBJKGRl
ZmF1bHRNZW51QXJyYXkuZ2V0KCkpLCAmbmV3TWVudVdLLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
KworICAgIG5ld01lbnUuY2xlYXIoKTsKKyAgICAKKyAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+
IGFycmF5ID0gYWRvcHRSZWYodG9JbXBsKG5ld01lbnVXSykpOworICAgIGlmICghYXJyYXkgfHwg
IWFycmF5LT5zaXplKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXJyYXktPnNpemUoKTsgKytpKSB7CisgICAgICAgIFdlYkNvbnRleHRN
ZW51SXRlbSogaXRlbSA9IGFycmF5LT5hdDxXZWJDb250ZXh0TWVudUl0ZW0+KGkpOworICAgICAg
ICBpZiAoIWl0ZW0pIHsKKyAgICAgICAgICAgIExPRyhDb250ZXh0TWVudSwgIk5ldyBtZW51IGVu
dHJ5IGF0IGluZGV4ICVpIGlzIG5vdCBhIFdlYkNvbnRleHRNZW51SXRlbSIsIChpbnQpaSk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmV3TWVu
dS5hcHBlbmQoKihpdGVtLT5kYXRhKCkpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnRfaAorI2RlZmluZSBJbmplY3RlZEJ1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudF9oCisKKyNpbmNsdWRlICJXS0J1bmRsZVBhZ2UuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBDb250
ZXh0TWVudTsKKyAgICBjbGFzcyBIaXRUZXN0UmVzdWx0OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgSW1tdXRhYmxlQXJyYXk7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRh
OworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQgeworcHVibGljOgorICAgIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
KCk7CisgICAgdm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Kik7
CisKKyAgICBib29sIGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqLCBXZWJD
b3JlOjpDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiYgbmV3TWVudSk7CisKK3ByaXZhdGU6CisgICAgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQgbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudF9oCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAko
cmV2aXNpb24gNzE2NDgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTMgQEAgV0tU
eXBlSUQgV0tCdW5kbGVQYWdlR2V0VHlwZUlEKCkKICAgICByZXR1cm4gdG9BUEkoV2ViUGFnZTo6
QVBJVHlwZSk7CiB9CiAKK3ZvaWQgV0tCdW5kbGVQYWdlU2V0Q29udGV4dE1lbnVDbGllbnQoV0tC
dW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50KiB3a0Ns
aWVudCkKK3sKKyAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCisgICAgICAg
IHJldHVybjsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUNv
bnRleHRNZW51Q2xpZW50KHdrQ2xpZW50KTsKK30KKwogdm9pZCBXS0J1bmRsZVBhZ2VTZXRFZGl0
b3JDbGllbnQoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUVkaXRvckNsaWVu
dCogd2tDbGllbnQpCiB7CiAgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQpJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaAkocmV2aXNpb24gNzE2NDgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4
MSw4ICsxODEsMTkgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUZvcm1DbGllbnQgewogfTsKIHR5cGVk
ZWYgc3RydWN0IFdLQnVuZGxlUGFnZUZvcm1DbGllbnQgV0tCdW5kbGVQYWdlRm9ybUNsaWVudDsK
IAotV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlUGFnZUdldFR5cGVJRCgpOworLy8gQ29udGV4
dE1lbnUgY2xpZW50Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VHZXRDb250ZXh0TWVudUZy
b21EZWZhdWx0Q29udGV4dE1lbnVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlSGl0VGVzdFJlc3VsdFJlZiBoaXRUZXN0UmVzdWx0LCBXS0FycmF5UmVmIGRlZmF1bHRNZW51
LCBXS0FycmF5UmVmKiBuZXdNZW51LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworc3RydWN0
IFdLQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50IHsKKyAgICBpbnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247
CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworICAgIFdLQnVuZGxlUGFnZUdldENvbnRleHRN
ZW51RnJvbURlZmF1bHRDb250ZXh0TWVudUNhbGxiYWNrICAgICAgICAgICAgZ2V0Q29udGV4dE1l
bnVGcm9tRGVmYXVsdE1lbnU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQgV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ7CiAKK1dLX0VYUE9SVCBX
S1R5cGVJRCBXS0J1bmRsZVBhZ2VHZXRUeXBlSUQoKTsKKyAKK1dLX0VYUE9SVCB2b2lkIFdLQnVu
ZGxlUGFnZVNldENvbnRleHRNZW51Q2xpZW50KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZVNldEVkaXRvckNsaWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlRWRp
dG9yQ2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlU2V0Rm9ybUNs
aWVudChXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlRm9ybUNsaWVudCogY2xpZW50
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZVNldExvYWRlckNsaWVudChXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50KiBjbGllbnQpOwpJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwCShyZXZpc2lvbiA3MTY0OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDggQEAKIAogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51Q2xpZW50LmgiCiAKKyNp
bmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KIAogI2RlZmluZSBESVNBQkxFX05PVF9J
TVBMRU1FTlRFRF9XQVJOSU5HUyAxCkBAIC00MSwxMSArNDMsMTIgQEAgdm9pZCBXZWJDb250ZXh0
TWVudUNsaWVudDo6Y29udGV4dE1lbnVEZQogCiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBXZWJD
b250ZXh0TWVudUNsaWVudDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1l
bnUqIG1lbnUpCiB7Ci0gICAgLy8gRklYTUU6ICBUaGUgZW1iZWRkZWQgYXBwIG5lZWRzIGEgY2hh
bmNlIHRvIGN1c3RvbWl6ZSB0aGUgY29udGV4dCBtZW51LCBhbmQgdGhhdCB3aWxsIHByb2JhYmx5
IGhhcHBlbgotICAgIC8vIHZpYSBhbiBpbmplY3RlZCBidW5kbGUuIDxyZGFyOi8vcHJvYmxlbS84
NjEzNzI3PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzIw
IGNvdmVyIHRoaXMgdGFzay4KLQotICAgIEFTU0VSVChtZW51KTsKLSAgICByZXR1cm4gbWVudS0+
cGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRh
PiBuZXdNZW51OworICAgIGlmICghbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xp
ZW50KCkuZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMobV9wYWdlLCBtZW51LCBuZXdNZW51
KSkKKyAgICAgICAgcmV0dXJuIG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKyAgICAKKyAg
ICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBjb3JlSXRlbVZlY3RvciA9IGNvcmVJdGVtcyhuZXdN
ZW51KTsKKyAgICByZXR1cm4gcGxhdGZvcm1NZW51RGVzY3JpcHRpb24oY29yZUl0ZW1WZWN0b3Ip
OwogfQogCiB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb250ZXh0TWVudSopCkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gNzE2NDgpCisrKyBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2
MSwxMSBAQCBDb3JlSVBDOjpDb25uZWN0aW9uKiBXZWJQYWdlOjpjb25uZWN0aW9uCiAgICAgcmV0
dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKTsKIH0KIAordm9pZCBXZWJQYWdl
Ojppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBhZ2VD
b250ZXh0TWVudUNsaWVudCogY2xpZW50KQoreworICAgIG1fY29udGV4dE1lbnVDbGllbnQuaW5p
dGlhbGl6ZShjbGllbnQpOworfQorCiB2b2lkIFdlYlBhZ2U6OmluaXRpYWxpemVJbmplY3RlZEJ1
bmRsZUVkaXRvckNsaWVudChXS0J1bmRsZVBhZ2VFZGl0b3JDbGllbnQqIGNsaWVudCkKIHsKICAg
ICBtX2VkaXRvckNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CkluZGV4OiBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiA3MTY0OCkKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAi
RmluZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVu
dUNsaWVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIgog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCIKQEAgLTEzMiwxMSArMTMzLDEzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogCiAgICAgLy8gLS0g
SW5qZWN0ZWRCdW5kbGUgbWV0aG9kcworICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVuZGxl
Q29udGV4dE1lbnVDbGllbnQoV0tCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQqKTsKICAgICB2
b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVudChXS0J1bmRsZVBhZ2VFZGl0
b3JDbGllbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQo
V0tCdW5kbGVQYWdlRm9ybUNsaWVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUluamVjdGVkQnVu
ZGxlTG9hZGVyQ2xpZW50KFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCopOwogICAgIHZvaWQgaW5p
dGlhbGl6ZUluamVjdGVkQnVuZGxlVUlDbGllbnQoV0tCdW5kbGVQYWdlVUlDbGllbnQqKTsKIAor
ICAgIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50JiBpbmplY3RlZEJ1bmRsZUNv
bnRleHRNZW51Q2xpZW50KCkgeyByZXR1cm4gbV9jb250ZXh0TWVudUNsaWVudDsgfQogICAgIElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCYgaW5qZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQo
KSB7IHJldHVybiBtX2VkaXRvckNsaWVudDsgfQogICAgIEluamVjdGVkQnVuZGxlUGFnZUZvcm1D
bGllbnQmIGluamVjdGVkQnVuZGxlRm9ybUNsaWVudCgpIHsgcmV0dXJuIG1fZm9ybUNsaWVudDsg
fQogICAgIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudCYgaW5qZWN0ZWRCdW5kbGVMb2Fk
ZXJDbGllbnQoKSB7IHJldHVybiBtX2xvYWRlckNsaWVudDsgfQpAQCAtMjkzLDYgKzI5Niw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fd2luZG93UmVzaXplclNpemU7CiAK
KyAgICBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCBtX2NvbnRleHRNZW51Q2xp
ZW50OwogICAgIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudCBtX2VkaXRvckNsaWVudDsK
ICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50IG1fZm9ybUNsaWVudDsKICAgICBJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQgbV9sb2FkZXJDbGllbnQ7CkluZGV4OiBXZWJLaXQy
L3dpbi9XZWJLaXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyLnZj
cHJvagkocmV2aXNpb24gNzE2NDgpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtNTA1LDYgKzUwNSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcV2ViQ29udGV4dE1lbnVJdGVtLmNw
cCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFNoYXJlZFxXZWJDb250ZXh0TWVudUl0ZW0uaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxXZWJDb250ZXh0TWVudUl0ZW1EYXRh
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0xMzUyLDYgKzEzNjAsMTQgQEAKIAkJCQkJ
Pg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlBy
b2Nlc3NcSW5qZWN0ZWRCdW5kbGVcSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
Y3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73800</attachid>
            <date>2010-11-12 17:39:56 -0800</date>
            <delta_ts>2010-11-15 10:46:07 -0800</delta_ts>
            <desc>Patch v1 (without ChangeLogs)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>67652</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvV2ViS2l0Mi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQy
LnBybwkocmV2aXNpb24gNzE5NTUpCisrKyBXZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDAsNiArMjAwLDggQEAgSEVBREVSUyArPSBcCiAgICAgUGxhdGZvcm0vcXQvTWFw
cGVkTWVtb3J5UG9vbC5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tCYXNlLmggXAogICAgIFNoYXJl
ZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5oIFwKKyAgICBTaGFyZWQvQVBJL2MvV0tDb250ZXh0
TWVudUl0ZW0uaCBcCisgICAgU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCBc
CiAgICAgU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuaCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLTnVt
YmVyLmggXAogICAgIFNoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIFwKQEAg
LTI4NSw2ICsyODcsNyBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvUHJvY2Vzc01vZGVs
LmggXAogICAgIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmggXAogICAgIFVJUHJvY2Vz
cy9WaXNpdGVkTGlua1Byb3ZpZGVyLmggXAorICAgIFVJUHJvY2Vzcy9XZWJBUElDb250ZXh0TWVu
dUNsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2ViQ29udGV4dC5oIFwKICAgICBVSVByb2Nlc3Mv
V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJDb250
ZXh0TWVudVByb3h5LmggXApAQCAtMzg0LDYgKzM4Nyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFBs
YXRmb3JtL3F0L1dvcmtRdWV1ZVF0LmNwcCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3Bw
IFwKICAgICBTaGFyZWQvQVBJL2MvV0tDZXJ0aWZpY2F0ZUluZm8uY3BwIFwKKyAgICBTaGFyZWQv
QVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tOdW1iZXIu
Y3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIFwKICAg
ICBTaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwIFwKQEAgLTQ1NSw2ICs0NTksNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBVSVByb2Nlc3MvUGx1Z2lucy9xdC9QbHVnaW5JbmZvU3RvcmVRdC5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rUHJvdmlkZXIuY3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViQVBJQ29udGV4dE1lbnVD
bGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAg
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKICAgICBVSVByb2Nlc3MvV2Vi
Q29udGV4dC5jcHAgXApJbmRleDogV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDcxOTU1KQor
KysgV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tEaWN0aW9uYXJ5KgogdHlwZWRl
ZiBzdHJ1Y3QgT3BhcXVlV0tEaWN0aW9uYXJ5KiBXS011dGFibGVEaWN0aW9uYXJ5UmVmOwogCiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0Jvb2xlYW4qIFdLQm9vbGVhblJlZjsKK3R5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQ29udGV4dE1lbnVJdGVtKiBXS0NvbnRleHRNZW51SXRl
bVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRGF0YSogV0tEYXRhUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tEb3VibGUqIFdLRG91YmxlUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tFcnJvciogV0tFcnJvclJlZjsKSW5kZXg6IFdlYktpdDIvU2hh
cmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLQ29udGV4dE1lbnVJdGVtLmgiCisK
KyNpbmNsdWRlICJNdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW0u
aCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCisjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCisjaW5jbHVkZSAiV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLQ29u
dGV4dE1lbnVJdGVtR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViQ29udGV4dE1l
bnVJdGVtOjpBUElUeXBlKTsKK30KKworV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVu
dUl0ZW1DcmVhdGVBc0FjdGlvbihXS0NvbnRleHRNZW51SXRlbVRhZyB0YWcsIFdLU3RyaW5nUmVm
IHRpdGxlLCBib29sIGVuYWJsZWQpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYkNvbnRleHRNZW51
SXRlbTo6Y3JlYXRlKFdlYkNvbnRleHRNZW51SXRlbURhdGEoQWN0aW9uVHlwZSwgdG9JbXBsKHRh
ZyksIHRvSW1wbCh0aXRsZSktPnN0cmluZygpLCBlbmFibGVkLCBmYWxzZSkpLmxlYWtSZWYoKSk7
Cit9CisKK1dLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3JlYXRlQXNDaGVj
a2FibGVBY3Rpb24oV0tDb250ZXh0TWVudUl0ZW1UYWcgdGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwg
Ym9vbCBlbmFibGVkLCBib29sIGNoZWNrZWQpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYkNvbnRl
eHRNZW51SXRlbTo6Y3JlYXRlKFdlYkNvbnRleHRNZW51SXRlbURhdGEoQ2hlY2thYmxlQWN0aW9u
VHlwZSwgdG9JbXBsKHRhZyksIHRvSW1wbCh0aXRsZSktPnN0cmluZygpLCBlbmFibGVkLCBjaGVj
a2VkKSkubGVha1JlZigpKTsKK30KKworV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVu
dUl0ZW1DcmVhdGVBc1N1Ym1lbnUoV0tTdHJpbmdSZWYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgV0tB
cnJheVJlZiBzdWJtZW51SXRlbXMpCit7CisgICAgSW1tdXRhYmxlQXJyYXkqIGFycmF5ID0gdG9J
bXBsKHN1Ym1lbnVJdGVtcyk7CisgICAgc2l6ZV90IHNpemUgPSBhcnJheS0+c2l6ZSgpOworICAg
IAorICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiB3ZWJTdWJtZW51OworICAgIHdl
YlN1Ym1lbnUucmVzZXJ2ZUNhcGFjaXR5KHNpemUpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFdlYkNvbnRleHRNZW51SXRlbSogaXRlbSA9
IGFycmF5LT5hdDxXZWJDb250ZXh0TWVudUl0ZW0+KGkpOworICAgICAgICBpZiAoaXRlbSkKKyAg
ICAgICAgICAgIHdlYlN1Ym1lbnUuYXBwZW5kKCppdGVtLT5kYXRhKCkpOworICAgIH0KKyAgICAK
KyAgICByZXR1cm4gdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViQ29udGV4dE1l
bnVJdGVtRGF0YShDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgdG9JbXBsKHRpdGxlKS0+c3Ry
aW5nKCksIGVuYWJsZWQsIHdlYlN1Ym1lbnUpKS5sZWFrUmVmKCkpOworfQorCitXS0NvbnRleHRN
ZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbVNlcGFyYXRvckl0ZW0oKQoreworICAgIHN0YXRp
YyBXS0NvbnRleHRNZW51SXRlbVJlZiBzZXBhcmF0b3JJdGVtID0gdG9BUEkoV2ViQ29udGV4dE1l
bnVJdGVtOjpjcmVhdGUoV2ViQ29udGV4dE1lbnVJdGVtRGF0YShTZXBhcmF0b3JUeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCksIHRydWUsIGZhbHNlKSkubGVha1JlZigp
KTsKKyAgICByZXR1cm4gc2VwYXJhdG9ySXRlbTsKK30KKworV0tDb250ZXh0TWVudUl0ZW1UYWcg
V0tDb250ZXh0TWVudUl0ZW1HZXRUYWcoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKK3sK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCktPmFjdGlvbigpKTsKK30K
KworV0tDb250ZXh0TWVudUl0ZW1UeXBlIFdLQ29udGV4dE1lbnVJdGVtR2V0VHlwZShXS0NvbnRl
eHRNZW51SXRlbVJlZiBpdGVtUmVmKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoaXRlbVJl
ZiktPmRhdGEoKS0+dHlwZSgpKTsKK30KKworV0tTdHJpbmdSZWYgV0tDb250ZXh0TWVudUl0ZW1D
b3B5VGl0bGUoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKK3sKKyAgICByZXR1cm4gdG9D
b3BpZWRBUEkodG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCktPnRpdGxlKCkuaW1wbCgpKTsKK30KKwor
Ym9vbCBXS0NvbnRleHRNZW51SXRlbUdldEVuYWJsZWQoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRl
bVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCktPmVuYWJsZWQoKTsK
K30KKworYm9vbCBXS0NvbnRleHRNZW51SXRlbUdldENoZWNrZWQoV0tDb250ZXh0TWVudUl0ZW1S
ZWYgaXRlbVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCktPmNoZWNr
ZWQoKTsKK30KKworV0tBcnJheVJlZiBXS0NvbnRleHRNZW51Q29weVN1Ym1lbnVJdGVtcyhXS0Nv
bnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQoreworICAgIFdlYkNvbnRleHRNZW51SXRlbURhdGEq
IGRhdGEgPSB0b0ltcGwoaXRlbVJlZiktPmRhdGEoKTsKKyAgICBpZiAoZGF0YS0+dHlwZSgpICE9
IFN1Ym1lbnVUeXBlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBjb25zdCBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHN1Ym1lbnVWZWN0b3IoZGF0YS0+c3VibWVudSgpKTsK
KyAgICB1bnNpZ25lZCBzaXplID0gc3VibWVudVZlY3Rvci5zaXplKCk7CisgICAgCisgICAgUmVm
UHRyPE11dGFibGVBcnJheT4gc3VibWVudSA9IE11dGFibGVBcnJheTo6Y3JlYXRlKCk7CisgICAg
c3VibWVudS0+cmVzZXJ2ZUNhcGFjaXR5KHNpemUpOworICAgIAorICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPFdlYkNvbnRleHRNZW51SXRl
bT4gaXRlbSA9IFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKHN1Ym1lbnVWZWN0b3JbaV0pOwor
ICAgICAgICBzdWJtZW51LT5hcHBlbmQoaXRlbS5nZXQoKSk7CisgICAgfQorICAgIAorICAgIHJl
dHVybiB0b0FQSShzdWJtZW51LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQpJbmRleDogV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tDb250ZXh0TWVudUl0ZW1UYWdzX2gKKyNk
ZWZpbmUgV0tDb250ZXh0TWVudUl0ZW1UYWdzX2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlE
IFdLQ29udGV4dE1lbnVJdGVtR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS0NvbnRleHRNZW51
SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVt
VGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVkKTsKK1dLX0VYUE9SVCBXS0NvbnRl
eHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzQ2hlY2thYmxlQWN0aW9uKFdL
Q29udGV4dE1lbnVJdGVtVGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVkLCBib29s
IGNoZWNrZWQpOworV0tfRVhQT1JUIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJ
dGVtQ3JlYXRlQXNTdWJtZW51KFdLU3RyaW5nUmVmIHRpdGxlLCBib29sIGVuYWJsZWQsIFdLQXJy
YXlSZWYgc3VibWVudUl0ZW1zKTsKK1dLX0VYUE9SVCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0Nv
bnRleHRNZW51SXRlbVNlcGFyYXRvckl0ZW0oKTsKKworV0tfRVhQT1JUIFdLQ29udGV4dE1lbnVJ
dGVtVGFnIFdLQ29udGV4dE1lbnVJdGVtR2V0VGFnKFdLQ29udGV4dE1lbnVJdGVtUmVmKTsKK1dL
X0VYUE9SVCBXS0NvbnRleHRNZW51SXRlbVR5cGUgV0tDb250ZXh0TWVudUl0ZW1HZXRUeXBlKFdL
Q29udGV4dE1lbnVJdGVtUmVmKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0NvbnRleHRNZW51
SXRlbUNvcHlUaXRsZShXS0NvbnRleHRNZW51SXRlbVJlZik7CitXS19FWFBPUlQgYm9vbCBXS0Nv
bnRleHRNZW51SXRlbUdldEVuYWJsZWQoV0tDb250ZXh0TWVudUl0ZW1SZWYpOworV0tfRVhQT1JU
IGJvb2wgV0tDb250ZXh0TWVudUl0ZW1HZXRDaGVja2VkKFdLQ29udGV4dE1lbnVJdGVtUmVmKTsK
K1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQ29udGV4dE1lbnVDb3B5U3VibWVudUl0ZW1zKFdLQ29u
dGV4dE1lbnVJdGVtUmVmKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLQ29udGV4dE1lbnVJdGVtVGFnc19oICovCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tDb250ZXh0TWVudUl0ZW1UeXBl
c19oCisjZGVmaW5lIFdLQ29udGV4dE1lbnVJdGVtVHlwZXNfaAorCisjaWZkZWYgX19jcGx1c3Bs
dXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0geworICAgIGtXS0NvbnRleHRNZW51SXRl
bVRhZ05vQWN0aW9uID0gMCwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3
V2luZG93LAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaywKKyAg
ICBrV0tDb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkLAorICAgIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93LAorICAgIGtXS0NvbnRleHRNZW51SXRl
bVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2ssCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnQ29weUlt
YWdlVG9DbGlwYm9hcmQsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdX
aW5kb3csCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnQ29weSwKKyAgICBrV0tDb250ZXh0TWVu
dUl0ZW1UYWdHb0JhY2ssCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkLAorICAg
IGtXS0NvbnRleHRNZW51SXRlbVRhZ1N0b3AsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnUmVs
b2FkLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ0N1dCwKKyAgICBrV0tDb250ZXh0TWVudUl0
ZW1UYWdQYXN0ZSwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ0d1ZXNzLAorICAg
IGtXS0NvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kLAorICAgIGtXS0NvbnRleHRNZW51
SXRlbVRhZ0lnbm9yZVNwZWxsaW5nLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3Bl
bGxpbmcsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnT3RoZXIsCisgICAga1dLQ29udGV4dE1l
bnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU2Vh
cmNoV2ViLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSwKKyAg
ICBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuV2l0aERlZmF1bHRBcHBsaWNhdGlvbiwKKyAgICBr
V0tDb250ZXh0TWVudUl0ZW1UYWdQREZBY3R1YWxTaXplLAorICAgIGtXS0NvbnRleHRNZW51SXRl
bVRhZ1BERlpvb21JbiwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZab29tT3V0LAorICAg
IGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERkF1dG9TaXplLAorICAgIGtXS0NvbnRleHRNZW51SXRl
bVRhZ1BERlNpbmdsZVBhZ2UsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFn
ZXMsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGQ29udGludW91cywKKyAgICBrV0tDb250
ZXh0TWVudUl0ZW1UYWdQREZOZXh0UGFnZSwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZQ
cmV2aW91c1BhZ2UsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmssCisgICAga1dL
Q29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hciwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1U
YWdTcGVsbGluZ01lbnUsIAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1Bh
bmVsLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcsCisgICAga1dLQ29u
dGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nLAorICAgIGtXS0NvbnRleHRN
ZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZywKKyAgICBrV0tDb250ZXh0TWVudUl0
ZW1UYWdGb250TWVudSwgCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzLAorICAg
IGtXS0NvbnRleHRNZW51SXRlbVRhZ0JvbGQsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnSXRh
bGljLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSwKKyAgICBrV0tDb250ZXh0
TWVudUl0ZW1UYWdPdXRsaW5lLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1N0eWxlcywKKyAg
ICBrV0tDb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzLAorICAgIGtXS0NvbnRleHRNZW51SXRl
bVRhZ1NwZWVjaE1lbnUsIAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1N0YXJ0U3BlYWtpbmcs
CisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nLAorICAgIGtXS0NvbnRleHRN
ZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51LCAKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1U
YWdEZWZhdWx0RGlyZWN0aW9uLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0
LAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0LAorICAgIGtXS0NvbnRleHRN
ZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmcsCisgICAga1dLQ29udGV4dE1lbnVJdGVt
VGFnUERGRmFjaW5nUGFnZXNTY3JvbGxpbmcsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnSW5z
cGVjdEVsZW1lbnQsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnUs
CisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQsCisgICAga1dL
Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0LAorICAgIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdCwKKyAgICBrV0tDb250ZXh0TWVu
dUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5LAorICAgIGtXS0NvbnRleHRNZW51
SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51LAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1Nob3dT
dWJzdGl0dXRpb25zLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlLAor
ICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzLAorICAgIGtXS0NvbnRleHRNZW51
SXRlbVRhZ1NtYXJ0RGFzaGVzLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3Ms
CisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50LAorICAgIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUsCisgICAga1dLQ29udGV4dE1lbnVJdGVt
VGFnTWFrZVVwcGVyQ2FzZSwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNl
LAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUsCisgICAga1dLQ29udGV4dE1l
bnVJdGVtVGFnQ2hhbmdlQmFjaywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuTWVkaWFJ
bk5ld1dpbmRvdywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlw
Ym9hcmQsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9scywKKyAg
ICBrV0tDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3AsCisgICAga1dLQ29udGV4dE1l
bnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4sCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFn
TWVkaWFQbGF5UGF1c2UsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlLAorICAg
IGtXS0NvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZyA9IDEwMDAwCit9OwordHlwZWRl
ZiB1aW50MzJfdCBXS0NvbnRleHRNZW51SXRlbVRhZzsKKworZW51bSB7CisgICAga1dLQ29udGV4
dE1lbnVJdGVtVHlwZUFjdGlvbiwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UeXBlQ2hlY2thYmxl
QWN0aW9uLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVR5cGVTZXBhcmF0b3IsCisgICAga1dLQ29u
dGV4dE1lbnVJdGVtVHlwZVN1Ym1lbnUKK307Cit0eXBlZGVmIHVpbnQzMl90IFdLQ29udGV4dE1l
bnVJdGVtVHlwZTsKKyAgICAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRp
ZiAvKiBXS0NvbnRleHRNZW51SXRlbVR5cGVzX2ggKi8KSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9j
L1dLU2hhcmVkQVBJQ2FzdC5oCShyZXZpc2lvbiA3MTk1NSkKKysrIFdlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLU2hhcmVkQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIFdLU2hhcmVkQVBJQ2FzdF9oCiAKICNpbmNsdWRlICJXS0Jhc2UuaCIKKyNpbmNsdWRl
ICJXS0NvbnRleHRNZW51SXRlbVR5cGVzLmgiCiAjaW5jbHVkZSAiV0tFdmVudC5oIgogI2luY2x1
ZGUgIldLR2VvbWV0cnkuaCIKICNpbmNsdWRlICJXZWJFcnJvci5oIgpAQCAtMzQsNiArMzUsNyBA
QAogI2luY2x1ZGUgIldlYk51bWJlci5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1
ZGUgIldlYlVSTC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGV4dE1lbnVJdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CkBAIC00Niw2ICs0OCw3IEBAIGNsYXNzIElt
bXV0YWJsZURpY3Rpb25hcnk7CiBjbGFzcyBNdXRhYmxlQXJyYXk7CiBjbGFzcyBNdXRhYmxlRGlj
dGlvbmFyeTsKIGNsYXNzIFdlYkNlcnRpZmljYXRlSW5mbzsKK2NsYXNzIFdlYkNvbnRleHRNZW51
SXRlbTsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBj
bGFzcyBXZWJVUkxSZXF1ZXN0OwpAQCAtNjIsNiArNjUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bXBsVHlwZT4gc3RydWN0IEltcGxUCiBXS19BRERfQVBJX01BUFBJTkcoV0tBcnJheVJlZiwgSW1t
dXRhYmxlQXJyYXkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCb29sZWFuUmVmLCBXZWJCb29sZWFu
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQ2VydGlmaWNhdGVJbmZvUmVmLCBXZWJDZXJ0aWZpY2F0
ZUluZm8pCitXS19BRERfQVBJX01BUFBJTkcoV0tDb250ZXh0TWVudUl0ZW1SZWYsIFdlYkNvbnRl
eHRNZW51SXRlbSkKIFdLX0FERF9BUElfTUFQUElORyhXS0RhdGFSZWYsIFdlYkRhdGEpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tEaWN0aW9uYXJ5UmVmLCBJbW11dGFibGVEaWN0aW9uYXJ5KQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLRG91YmxlUmVmLCBXZWJEb3VibGUpCkBAIC0yMzQsNiArMjM4LDM3
NSBAQCBpbmxpbmUgV0tFdmVudE1vdXNlQnV0dG9uIHRvQVBJKFdlYk1vdXNlCiAgICAgcmV0dXJu
IHdrTW91c2VCdXR0b247CiB9CiAKK2lubGluZSBXS0NvbnRleHRNZW51SXRlbVRhZyB0b0FQSShX
ZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24p
IHsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uOgorICAgICAg
ICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb247CisgICAgY2FzZSBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93OgorICAgICAgICByZXR1cm4g
a1dLQ29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdzsKKyAgICBjYXNlIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzazoKKyAgICAgICAgcmV0dXJu
IGtXS0NvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzazsKKyAgICBjYXNlIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQ6CisgICAgICAgIHJldHVy
biBrV0tDb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkOworICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3c6CisgICAgICAgIHJl
dHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdzsKKyAgICBjYXNl
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2s6CisgICAgICAg
IHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrOworICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQ6CisgICAg
ICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZDsKKyAg
ICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93Ogor
ICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3c7
CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5OgorICAgICAgICByZXR1
cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnQ29weTsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ0dvQmFjazoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0dv
QmFjazsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZDoKKyAg
ICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZDsKKyAgICBjYXNlIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N0b3A6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0
TWVudUl0ZW1UYWdTdG9wOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUmVs
b2FkOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnUmVsb2FkOworICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ3V0OgorICAgICAgICByZXR1cm4ga1dLQ29u
dGV4dE1lbnVJdGVtVGFnQ3V0OworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
UGFzdGU6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdQYXN0ZTsKKyAgICBj
YXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3M6CisgICAgICAgIHJl
dHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ0d1ZXNzOworICAgIGNhc2UgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQ6CisgICAgICAgIHJldHVybiBrV0tD
b250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZDsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1l
bnVJdGVtVGFnSWdub3JlU3BlbGxpbmc7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdMZWFyblNwZWxsaW5nOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFn
TGVhcm5TcGVsbGluZzsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ090aGVy
OgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnT3RoZXI7CisgICAgY2FzZSBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodDoKKyAgICAgICAgcmV0
dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0OworICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViOgorICAgICAgICByZXR1cm4ga1dLQ29u
dGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5OgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJ
dGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5OworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnT3BlbldpdGhEZWZhdWx0QXBwbGljYXRpb246CisgICAgICAgIHJldHVybiBrV0tDb250
ZXh0TWVudUl0ZW1UYWdPcGVuV2l0aERlZmF1bHRBcHBsaWNhdGlvbjsKKyAgICBjYXNlIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVBERkFjdHVhbFNpemU6CisgICAgICAgIHJldHVybiBrV0tDb250
ZXh0TWVudUl0ZW1UYWdQREZBY3R1YWxTaXplOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtUERGWm9vbUluOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnUERG
Wm9vbUluOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGWm9vbU91dDoKKyAg
ICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERlpvb21PdXQ7CisgICAgY2FzZSBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZBdXRvU2l6ZToKKyAgICAgICAgcmV0dXJuIGtXS0Nv
bnRleHRNZW51SXRlbVRhZ1BERkF1dG9TaXplOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtUERGU2luZ2xlUGFnZToKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRh
Z1BERlNpbmdsZVBhZ2U7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZGYWNp
bmdQYWdlczoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1Bh
Z2VzOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQ29udGludW91czoKKyAg
ICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERkNvbnRpbnVvdXM7CisgICAgY2Fz
ZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZOZXh0UGFnZToKKyAgICAgICAgcmV0dXJuIGtX
S0NvbnRleHRNZW51SXRlbVRhZ1BERk5leHRQYWdlOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtUERGUHJldmlvdXNQYWdlOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJ
dGVtVGFnUERGUHJldmlvdXNQYWdlOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnT3Blbkxpbms6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlu
azsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXI6Cisg
ICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyOworICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51OgorICAgICAgICByZXR1
cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51OworICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWw6CisgICAgICAgIHJldHVybiBrV0tD
b250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDsKKyAgICBjYXNlIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmc6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0
TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nOworICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nOgorICAgICAgICByZXR1
cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nOworICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnU6CisgICAgICAgIHJldHVybiBr
V0tDb250ZXh0TWVudUl0ZW1UYWdGb250TWVudTsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1Nob3dGb250czoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRh
Z1Nob3dGb250czsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0JvbGQ6Cisg
ICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdCb2xkOworICAgIGNhc2UgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnSXRhbGljOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1l
bnVJdGVtVGFnSXRhbGljOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVW5k
ZXJsaW5lOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lOwor
ICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3V0bGluZToKKyAgICAgICAgcmV0
dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ091dGxpbmU7CisgICAgY2FzZSBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdTdHlsZXM6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1U
YWdTdHlsZXM7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3Jz
OgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9yczsKKyAgICBj
YXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnU6CisgICAgICAgIHJldHVy
biBrV0tDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51OworICAgIGNhc2UgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZzoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRN
ZW51SXRlbVRhZ1N0YXJ0U3BlYWtpbmc7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdTdG9wU3BlYWtpbmc6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdT
dG9wU3BlYWtpbmc7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdXcml0aW5n
RGlyZWN0aW9uTWVudToKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1dyaXRp
bmdEaXJlY3Rpb25NZW51OworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRGVm
YXVsdERpcmVjdGlvbjoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0RlZmF1
bHREaXJlY3Rpb247CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9S
aWdodDoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0Owor
ICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQ6CisgICAgICAg
IHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDsKKyAgICBjYXNlIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmc6CisgICAgICAgIHJl
dHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Nyb2xsaW5nOworICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNTY3JvbGxpbmc6Cisg
ICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9sbGlu
ZzsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50Ogor
ICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ7CisgICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudToKKyAgICAg
ICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51OworICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdDsKKyAg
ICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdo
dDoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0
VG9SaWdodDsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rp
b25SaWdodFRvTGVmdDoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RleHRE
aXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z09wZW5NZWRpYUluTmV3V2luZG93OgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVt
VGFnT3Blbk1lZGlhSW5OZXdXaW5kb3c7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0
TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ7CisgICAgY2FzZSBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzOgorICAgICAgICByZXR1cm4ga1dL
Q29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9sczsKKyAgICBjYXNlIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcDoKKyAgICAgICAgcmV0dXJuIGtXS0Nv
bnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcDsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuOgorICAgICAgICByZXR1cm4ga1dLQ29u
dGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW47CisgICAgY2FzZSBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXlQYXVzZToKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ01lZGlhUGxheVBhdXNlOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnTWVkaWFNdXRlOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFn
TWVkaWFNdXRlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHk6CisgICAgICAgIHJldHVybiBr
V0tDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5OworICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6CisgICAgICAg
IHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudTsKKyAgICBjYXNl
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOgorICAgICAgICBy
ZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM7CisgICAgY2FzZSBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToKKyAgICAgICAgcmV0dXJu
IGtXS0NvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlOworICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0
TWVudUl0ZW1UYWdTbWFydFF1b3RlczsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1NtYXJ0RGFzaGVzOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnU21h
cnREYXNoZXM7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtz
OgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rczsKKyAgICBj
YXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoKKyAgICAgICAg
cmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDsKKyAgICBjYXNlIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnU6CisgICAgICAgIHJl
dHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNNZW51OworICAgIGNhc2Ug
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZToKKyAgICAgICAgcmV0dXJu
IGtXS0NvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2U7CisgICAgY2FzZSBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4
dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZTsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ0NhcGl0YWxpemU6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdD
YXBpdGFsaXplOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFj
azoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0NoYW5nZUJhY2s7CisjZW5k
aWYKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAoYWN0aW9uIDwgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKQorICAgICAgICAgICAgTE9HX0VSUk9SKCJDb250ZXh0
TWVudUFjdGlvbiAlaSBpcyBhbiB1bmtub3duIHRhZyBidXQgaXMgYmVsb3cgdGhlIGFsbG93YWJs
ZSBjdXN0b20gdGFnIHZhbHVlIG9mICVpIiwgYWN0aW9uLCBXZWJDb3JlOjogIENvbnRleHRNZW51
SXRlbUJhc2VBcHBsaWNhdGlvblRhZyk7CisgICAgICAgIHJldHVybiBhY3Rpb247CisgICAgfQor
fQorCitpbmxpbmUgV2ViQ29yZTo6Q29udGV4dE1lbnVBY3Rpb24gdG9JbXBsKFdLQ29udGV4dE1l
bnVJdGVtVGFnIHRhZykKK3sKKyAgICBzd2l0Y2ggKHRhZykgeworICAgIGNhc2Uga1dLQ29udGV4
dE1lbnVJdGVtVGFnTm9BY3Rpb246CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdOb0FjdGlvbjsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5r
SW5OZXdXaW5kb3c6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdP
cGVuTGlua0luTmV3V2luZG93OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnRG93bmxv
YWRMaW5rVG9EaXNrOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
RG93bmxvYWRMaW5rVG9EaXNrOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnQ29weUxp
bmtUb0NsaXBib2FyZDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z0NvcHlMaW5rVG9DbGlwYm9hcmQ7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVu
SW1hZ2VJbk5ld1dpbmRvdzoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ09wZW5JbWFnZUluTmV3V2luZG93OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFn
RG93bmxvYWRJbWFnZVRvRGlzazoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2s7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1U
YWdDb3B5SW1hZ2VUb0NsaXBib2FyZDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJ
dGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3c6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdzsKKyAgICBjYXNlIGtXS0NvbnRleHRN
ZW51SXRlbVRhZ0NvcHk6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdDb3B5OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnR29CYWNrOgorICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnR29CYWNrOworICAgIGNhc2Uga1dLQ29u
dGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnR29Gb3J3YXJkOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnU3Rv
cDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N0b3A7CisgICAg
Y2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQ6CisgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQ7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1U
YWdDdXQ6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDdXQ7Cisg
ICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdQYXN0ZToKKyAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVt
VGFnU3BlbGxpbmdHdWVzczoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1NwZWxsaW5nR3Vlc3M7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNz
ZXNGb3VuZDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05vR3Vl
c3Nlc0ZvdW5kOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmc6
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGlu
ZzsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmc6CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nOworICAgIGNh
c2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnT3RoZXI6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdPdGhlcjsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1Nl
YXJjaEluU3BvdGxpZ2h0OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnU2VhcmNoSW5TcG90bGlnaHQ7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdTZWFy
Y2hXZWI6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hX
ZWI7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnk6Cisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25h
cnk7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuV2l0aERlZmF1bHRBcHBsaWNh
dGlvbjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5XaXRo
RGVmYXVsdEFwcGxpY2F0aW9uOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGQWN0
dWFsU2l6ZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkFjdHVh
bFNpemU7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZab29tSW46CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZab29tSW47CisgICAgY2FzZSBrV0tD
b250ZXh0TWVudUl0ZW1UYWdQREZab29tT3V0OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtUERGWm9vbU91dDsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BE
RkF1dG9TaXplOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGQXV0
b1NpemU7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlOgorICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGU2luZ2xlUGFnZTsKKyAgICBj
YXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzOgorICAgICAgICByZXR1cm4g
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERGRmFjaW5nUGFnZXM7CisgICAgY2FzZSBrV0tDb250
ZXh0TWVudUl0ZW1UYWdQREZDb250aW51b3VzOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtUERGQ29udGludW91czsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRh
Z1BERk5leHRQYWdlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtUERG
TmV4dFBhZ2U7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZQcmV2aW91c1BhZ2U6
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZQcmV2aW91c1BhZ2U7
CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluazoKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rOworICAgIGNhc2Uga1dLQ29udGV4
dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXI7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1U
YWdTcGVsbGluZ01lbnU6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdTcGVsbGluZ01lbnU7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxp
bmdQYW5lbDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dT
cGVsbGluZ1BhbmVsOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGlu
ZzoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxp
bmc7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBp
bmc6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxs
aW5nV2hpbGVUeXBpbmc7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1t
YXJXaXRoU3BlbGxpbmc6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmc7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1U
YWdGb250TWVudToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0Zv
bnRNZW51OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzOgorICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd0ZvbnRzOworICAgIGNhc2Ug
a1dLQ29udGV4dE1lbnVJdGVtVGFnQm9sZDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0JvbGQ7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM7CisgICAg
Y2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6CisgICAgICAgIHJldHVybiBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU7CisgICAgY2FzZSBrV0tDb250ZXh0TWVu
dUl0ZW1UYWdPdXRsaW5lOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnT3V0bGluZTsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1N0eWxlczoKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N0eWxlczsKKyAgICBjYXNlIGtX
S0NvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnM6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVt
VGFnU3BlZWNoTWVudToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z1NwZWVjaE1lbnU7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5n
OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2lu
ZzsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZzoKKyAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZzsKKyAgICBjYXNl
IGtXS0NvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51OgorICAgICAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnU7CisgICAg
Y2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uOgorICAgICAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERpcmVjdGlvbjsKKyAgICBjYXNl
IGtXS0NvbnRleHRNZW51SXRlbVRhZ0xlZnRUb1JpZ2h0OgorICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQ7CisgICAgY2FzZSBrV0tDb250ZXh0TWVu
dUl0ZW1UYWdSaWdodFRvTGVmdDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ1JpZ2h0VG9MZWZ0OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGU2lu
Z2xlUGFnZVNjcm9sbGluZzoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmc7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1U
YWdQREZGYWNpbmdQYWdlc1Njcm9sbGluZzoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xsaW5nOworICAgIGNhc2Uga1dLQ29udGV4
dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRl
bVRhZ1RleHREaXJlY3Rpb25NZW51OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnU7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uRGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJ
dGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0OworICAgIGNhc2Uga1dL
Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0OgorICAgICAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0Owor
ICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnT3Blbk1lZGlhSW5OZXdXaW5kb3c6CisgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRv
dzsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0NsaXBib2Fy
ZDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxp
bmtUb0NsaXBib2FyZDsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlh
Q29udHJvbHM6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUb2dn
bGVNZWRpYUNvbnRyb2xzOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVk
aWFMb29wOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVG9nZ2xl
TWVkaWFMb29wOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxz
Y3JlZW46CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdFbnRlclZp
ZGVvRnVsbHNjcmVlbjsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheVBh
dXNlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5
UGF1c2U7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGU6CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGU7CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0
b21hdGljYWxseToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0Nv
cnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHk7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1U
YWdTdWJzdGl0dXRpb25zTWVudToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFn
U2hvd1N1YnN0aXR1dGlvbnM6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdTaG93U3Vic3RpdHV0aW9uczsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1Nt
YXJ0Q29weVBhc3RlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
U21hcnRDb3B5UGFzdGU7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3Rl
czoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVz
OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXM6CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTbWFydERhc2hlczsKKyAgICBjYXNlIGtX
S0NvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3M6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVt
VGFnVGV4dFJlcGxhY2VtZW50OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnVGV4dFJlcGxhY2VtZW50OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnVHJh
bnNmb3JtYXRpb25zTWVudToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ1RyYW5zZm9ybWF0aW9uc01lbnU7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdN
YWtlVXBwZXJDYXNlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
TWFrZVVwcGVyQ2FzZTsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNh
c2U6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJD
YXNlOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZToKKyAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemU7CisgICAgY2FzZSBr
V0tDb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAg
ICAgIGlmICh0YWcgPCBrV0tDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpCisgICAg
ICAgICAgICBMT0dfRVJST1IoIldLQ29udGV4dE1lbnVJdGVtVGFnICVpIGlzIGFuIHVua25vd24g
dGFnIGJ1dCBpcyBiZWxvdyB0aGUgYWxsb3dhYmxlIGN1c3RvbSB0YWcgdmFsdWUgb2YgJWkiLCB0
YWcsIGtXS0NvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZyk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDb250ZXh0TWVudUFjdGlvbj4odGFnKTsKKyAgICB9Cit9
CisKK2lubGluZSBXS0NvbnRleHRNZW51SXRlbVR5cGUgdG9BUEkoV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCh0eXBlKSB7CisgICAgY2FzZSBXZWJDb3Jl
OjpBY3Rpb25UeXBlOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVHlwZUFjdGlv
bjsKKyAgICBjYXNlIFdlYkNvcmU6OkNoZWNrYWJsZUFjdGlvblR5cGU6CisgICAgICAgIHJldHVy
biBrV0tDb250ZXh0TWVudUl0ZW1UeXBlQ2hlY2thYmxlQWN0aW9uOworICAgIGNhc2UgV2ViQ29y
ZTo6U2VwYXJhdG9yVHlwZToKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVR5cGVT
ZXBhcmF0b3I7CisgICAgY2FzZSBXZWJDb3JlOjpTdWJtZW51VHlwZToKKyAgICAgICAgcmV0dXJu
IGtXS0NvbnRleHRNZW51SXRlbVR5cGVTdWJtZW51OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVHlw
ZUFjdGlvbjsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
V0tTaGFyZWRBUElDYXN0X2gKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkFQSUNvbnRleHRN
ZW51Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJBUElDb250
ZXh0TWVudUNsaWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJB
UElDb250ZXh0TWVudUNsaWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiV2ViQVBJQ29udGV4dE1lbnVDbGllbnQuaCIKKworI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJNdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXZWJD
b250ZXh0TWVudUl0ZW0uaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1No
YXJlZEFQSUNhc3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViQVBJQ29udGV4
dE1lbnVDbGllbnQ6OmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkq
IHBhZ2UsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRNZW51
VmVjdG9yLCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGN1c3RvbU1lbnUsIEFQSU9i
amVjdCogdXNlckRhdGEpCit7CisgICAgaWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgdW5zaWdu
ZWQgc2l6ZSA9IHByb3Bvc2VkTWVudVZlY3Rvci5zaXplKCk7CisgICAgUmVmUHRyPE11dGFibGVB
cnJheT4gcHJvcG9zZWRNZW51ID0gTXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKKyAgICBwcm9wb3Nl
ZE1lbnUtPnJlc2VydmVDYXBhY2l0eShzaXplKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICBwcm9wb3NlZE1lbnUtPmFwcGVuZChXZWJDb250ZXh0TWVu
dUl0ZW06OmNyZWF0ZShwcm9wb3NlZE1lbnVWZWN0b3JbaV0pLmdldCgpKTsKKyAgICAgICAgCisg
ICAgV0tBcnJheVJlZiBuZXdNZW51ID0gMDsKKyAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZy
b21Qcm9wb3NlZE1lbnUodG9BUEkocGFnZSksIHRvQVBJKHByb3Bvc2VkTWVudS5nZXQoKSksICZu
ZXdNZW51LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIFJlZlB0
cjxJbW11dGFibGVBcnJheT4gYXJyYXkgPSBhZG9wdFJlZih0b0ltcGwobmV3TWVudSkpOworICAg
IAorICAgIGN1c3RvbU1lbnUuY2xlYXIoKTsKKyAgICAKKyAgICBzaXplX3QgbmV3U2l6ZSA9IGFy
cmF5ID8gYXJyYXktPnNpemUoKSA6IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdT
aXplOyArK2kpIHsKKyAgICAgICAgV2ViQ29udGV4dE1lbnVJdGVtKiBpdGVtID0gYXJyYXktPmF0
PFdlYkNvbnRleHRNZW51SXRlbT4oaSk7CisgICAgICAgIGlmICghaXRlbSkgeworICAgICAgICAg
ICAgTE9HKENvbnRleHRNZW51LCAiTmV3IG1lbnUgZW50cnkgYXQgaW5kZXggJWkgaXMgbm90IGEg
V2ViQ29udGV4dE1lbnVJdGVtIiwgKGludClpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBjdXN0b21NZW51LmFwcGVuZCgqaXRlbS0+ZGF0YSgp
KTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQVBJQ29udGV4dE1lbnVDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJBUElDb250ZXh0TWVudUNsaWVudC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQVBJQ29udGV4dE1lbnVDbGll
bnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViQVBJQ29udGV4dE1lbnVDbGllbnRfaAorI2RlZmluZSBXZWJBUElDb250ZXh0TWVudUNsaWVu
dF9oCisKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJXS1BhZ2UuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBBUElPYmpl
Y3Q7CitjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW1EYXRhOworY2xhc3MgV2ViUGFnZVByb3h5Owor
CitjbGFzcyBXZWJBUElDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tQYWdl
Q29udGV4dE1lbnVDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICBib29sIGdldENvbnRleHRNZW51RnJv
bVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4mIHByb3Bvc2VkTWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBj
dXN0b21NZW51LCBBUElPYmplY3QqIHVzZXJEYXRhKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViQVBJQ29udGV4dE1lbnVDbGllbnRfaApJbmRleDogV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA3MTk1NSkKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsxNjMsMTEgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVGaW5kQ2xpZW50KAogICAgIG1fZmluZENsaWVu
dC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXpl
Q29udGV4dE1lbnVDbGllbnQoY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbGllbnQqIGNsaWVudCkK
K3sKKyAgICBtX2NvbnRleHRNZW51Q2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKK30KKwogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlbGF1bmNoKCkKIHsKICAgICBtX2lzVmFsaWQgPSB0cnVlOwpAQCAt
MTE3MSwxNCArMTE3NiwyOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZVBvcHVwTWVudSgpCiAg
ICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0Nv
bnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgaXRlbXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNv
bnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRJdGVtcywgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKG1fYWN0aXZlQ29udGV4
dE1lbnUpCiAgICAgICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPmhpZGVDb250ZXh0TWVudSgpOwog
ICAgIGVsc2UKICAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG1fcGFnZUNsaWVudC0+Y3Jl
YXRlQ29udGV4dE1lbnVQcm94eSh0aGlzKTsKLSAgICAgIAotICAgIG1fYWN0aXZlQ29udGV4dE1l
bnUtPnNob3dDb250ZXh0TWVudShtZW51TG9jYXRpb24sIGl0ZW1zKTsKKworICAgIC8vIEdpdmUg
dGhlIFBhZ2VDb250ZXh0TWVudUNsaWVudCBvbmUgbGFzdCBzd2lwZSBhdCBjaGFuZ2luZyB0aGUg
bWVudS4KKyAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gaXRlbXM7CisgICAgCisg
ICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdl
RGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0
KCkpOworICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQorICAgICAg
ICByZXR1cm47CisgICAgICAgIAorICAgIGlmICghbV9jb250ZXh0TWVudUNsaWVudC5nZXRDb250
ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIHVzZXJE
YXRhLmdldCgpKSkgeworICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5zaG93Q29udGV4dE1l
bnUobWVudUxvY2F0aW9uLCBwcm9wb3NlZEl0ZW1zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBpZiAoaXRlbXMuc2l6ZSgpKQorICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51
LT5zaG93Q29udGV4dE1lbnUobWVudUxvY2F0aW9uLCBpdGVtcyk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhJiBpdGVtKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDcxOTU1
KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJT
aGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKKyNpbmNsdWRlICJXZWJBUElDb250
ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbURhdGEuaCIKICNp
bmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkZpbmRDbGllbnQuaCIKQEAgLTExOSwx
MSArMTIwLDEyIEBAIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yKCk7
CiAKICAgICB2b2lkIHNldFBhZ2VDbGllbnQoUGFnZUNsaWVudCopOworICAgIHZvaWQgaW5pdGlh
bGl6ZUNvbnRleHRNZW51Q2xpZW50KGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50Kik7Cisg
ICAgdm9pZCBpbml0aWFsaXplRmluZENsaWVudChjb25zdCBXS1BhZ2VGaW5kQ2xpZW50Kik7Cisg
ICAgdm9pZCBpbml0aWFsaXplRm9ybUNsaWVudChjb25zdCBXS1BhZ2VGb3JtQ2xpZW50Kik7CiAg
ICAgdm9pZCBpbml0aWFsaXplTG9hZGVyQ2xpZW50KGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudCop
OwogICAgIHZvaWQgaW5pdGlhbGl6ZVBvbGljeUNsaWVudChjb25zdCBXS1BhZ2VQb2xpY3lDbGll
bnQqKTsKLSAgICB2b2lkIGluaXRpYWxpemVGb3JtQ2xpZW50KGNvbnN0IFdLUGFnZUZvcm1DbGll
bnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVVSUNsaWVudChjb25zdCBXS1BhZ2VVSUNsaWVudCop
OwotICAgIHZvaWQgaW5pdGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdlRmluZENsaWVudCop
OwogICAgIHZvaWQgcmVsYXVuY2goKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVdlYlBhZ2UoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpOwpAQCAtMzQwLDcgKzM0Miw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBoaWRlUG9wdXBNZW51KCk7CiAKICAgICAvLyBDb250ZXh0IE1lbnUuCi0gICAgdm9pZCBz
aG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1E
YXRhPiYsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogCiAgICAgdm9pZCB0YWtlRm9jdXMo
Ym9vbCBkaXJlY3Rpb24pOwogICAgIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmKTsKQEAg
LTM2Niw2ICszNjgsNyBAQCBwcml2YXRlOgogICAgIFdlYkZvcm1DbGllbnQgbV9mb3JtQ2xpZW50
OwogICAgIFdlYlVJQ2xpZW50IG1fdWlDbGllbnQ7CiAgICAgV2ViRmluZENsaWVudCBtX2ZpbmRD
bGllbnQ7CisgICAgV2ViQVBJQ29udGV4dE1lbnVDbGllbnQgbV9jb250ZXh0TWVudUNsaWVudDsK
IAogICAgIE93blB0cjxEcmF3aW5nQXJlYVByb3h5PiBtX2RyYXdpbmdBcmVhOwogICAgIFJlZlB0
cjxXZWJQYWdlTmFtZXNwYWNlPiBtX3BhZ2VOYW1lc3BhY2U7CkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiA3MTk1NSkKKysrIFdlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MTI4LDcgKzEyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgSGlkZVBvcHVw
TWVudSgpCiAgICAgCiAgICAgIyBDb250ZXh0TWVudQotICAgIFNob3dDb250ZXh0TWVudShXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgVmVjdG9yPFdlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4gaXRlbXMpCisgICAgU2hvd0NvbnRleHRNZW51KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBW
ZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBpdGVtcywgV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKICAgICAjIEFjY2VsZXJhdGVkIGNvbXBzaXRpbmcgbWVzc2FnZXMu
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDcxOTU1KQorKysg
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4
LDE4ICsyMzgsMTggQEAgdm9pZCBXS1BhZ2VDb3VudFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIAog
ICAgIHRvSW1wbChwYWdlUmVmKS0+Y291bnRTdHJpbmdNYXRjaGVzKHRvSW1wbChzdHJpbmcpLT5z
dHJpbmcoKSwgY2FzZUluc2Vuc2l0aXZlLCBtYXhNYXRjaENvdW50KTsKIH0KIAotdm9pZCBXS1Bh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2Fk
ZXJDbGllbnQqIHdrQ2xpZW50KQordm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50KiB3a0NsaWVu
dCkKIHsKICAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHJl
dHVybjsKLSAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVMb2FkZXJDbGllbnQod2tDbGll
bnQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUNvbnRleHRNZW51Q2xpZW50KHdr
Q2xpZW50KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnQqIHdrQ2xpZW50KQordm9pZCBXS1BhZ2VT
ZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVu
dCogd2tDbGllbnQpCiB7CiAgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQog
ICAgICAgICByZXR1cm47Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplUG9saWN5Q2xp
ZW50KHdrQ2xpZW50KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVGaW5kQ2xpZW50
KHdrQ2xpZW50KTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlRm9ybUNsaWVudCogd2tDbGllbnQpCkBAIC0yNTksMTggKzI1
OSwyNSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBwCiAgICAgdG9J
bXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplRm9ybUNsaWVudCh3a0NsaWVudCk7CiB9CiAKLXZvaWQg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNs
aWVudCogd2tDbGllbnQpCit2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudCogd2tDbGllbnQpCiB7CiAgICAgaWYg
KHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQogICAgICAgICByZXR1cm47Ci0gICAgdG9J
bXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplVUlDbGllbnQod2tDbGllbnQpOworICAgIHRvSW1wbChw
YWdlUmVmKS0+aW5pdGlhbGl6ZUxvYWRlckNsaWVudCh3a0NsaWVudCk7CiB9CiAKLXZvaWQgV0tQ
YWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRD
bGllbnQqIHdrQ2xpZW50KQordm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnQqIHdrQ2xpZW50KQogewogICAgIGlm
ICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJuOwotICAgIHRv
SW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUZpbmRDbGllbnQod2tDbGllbnQpOworICAgIHRvSW1w
bChwYWdlUmVmKS0+aW5pdGlhbGl6ZVBvbGljeUNsaWVudCh3a0NsaWVudCk7Cit9CisKK3ZvaWQg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNs
aWVudCogd2tDbGllbnQpCit7CisgICAgaWYgKHdrQ2xpZW50ICYmIHdrQ2xpZW50LT52ZXJzaW9u
KQorICAgICAgICByZXR1cm47CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplVUlDbGll
bnQod2tDbGllbnQpOwogfQogCiB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc2NyaXB0UmVmLCB2b2lkKiBjb250ZXh0LCBX
S1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24gY2FsbGJhY2spCkluZGV4OiBXZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAkocmV2aXNpb24gNzE5NTUpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMywxNiBAQCBlbnVtIHsKICAgICBr
V0tNb3JlVGhhbk1heGltdW1NYXRjaENvdW50ID0gLTEKIH07CiAKKy8vIENvbnRleHRNZW51IGNs
aWVudAordHlwZWRlZiB2b2lkICgqV0tQYWdlR2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRDb250
ZXh0TWVudUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tBcnJheVJlZiBwcm9wb3NlZE1lbnUs
IFdLQXJyYXlSZWYqIG5ld01lbnUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CisKK3N0cnVjdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudCB7CisgICAgaW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBXS1BhZ2VHZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZENvbnRleHRNZW51Q2FsbGJhY2sgICAgICAgICAgICAgICAg
IGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudTsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1Bh
Z2VDb250ZXh0TWVudUNsaWVudCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudDsKKwogV0tfRVhQT1JU
IFdLVHlwZUlEIFdLUGFnZUdldFR5cGVJRCgpOwogCiBXS19FWFBPUlQgV0tQYWdlTmFtZXNwYWNl
UmVmIFdLUGFnZUdldFBhZ2VOYW1lc3BhY2UoV0tQYWdlUmVmIHBhZ2UpOwpAQCAtMjc1LDExICsy
ODUsMTIgQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlRmluZFN0cmluZyhXS1BhZ2VSZQogV0tfRVhQ
T1JUIHZvaWQgV0tQYWdlSGlkZUZpbmRVSShXS1BhZ2VSZWYgcGFnZSk7CiBXS19FWFBPUlQgdm9p
ZCBXS1BhZ2VDb3VudFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0
cmluZywgYm9vbCBjYXNlSW5zZW5zaXRpdmUsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwogCitX
S19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBh
Z2UsIGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50KiBjbGllbnQpOworV0tfRVhQT1JUIHZv
aWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZUZp
bmRDbGllbnQqIGNsaWVudCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVu
dChXS1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlRm9ybUNsaWVudCogY2xpZW50KTsKIFdLX0VY
UE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0
IFdLUGFnZUxvYWRlckNsaWVudCogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBh
Z2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudCog
Y2xpZW50KTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQg
V0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBjb25zdCBXS1BhZ2VVSUNsaWVu
dCogY2xpZW50KTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KFdLUGFn
ZVJlZiBwYWdlLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50KiBjbGllbnQpOwogCiB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VSdW5KYXZhU2NyaXB0RnVuY3Rpb24pKFdLU3RyaW5nUmVmLCBXS0Vycm9yUmVm
LCB2b2lkKik7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUo
V0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHNjcmlwdCwgdm9pZCogY29udGV4dCwgV0tQYWdl
UnVuSmF2YVNjcmlwdEZ1bmN0aW9uIGZ1bmN0aW9uKTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCShyZXZpc2lvbiA3MTk1NSkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5
TWFjLmgiCiAKKyNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiUGFn
ZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5j
bHVkZSAiV0tWaWV3LmgiCkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gNzE5NTUpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk0LDE0ICsxOTQsMjAgQEAKIAkJMUNB
OEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIwMEJDN0JE
MCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi87IH07CiAJCTUxMEZCQjlBMTI4OEM5NUUwMEFGRkRG
NCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk4MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250
ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLzsgfTsKIAkJNTEwRkJCOUIxMjg4Qzk1RTAwQUZGREY0IC8q
IFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMEZCQjk5MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhLmggKi87IH07CisJCTUxMTFDQjAyMTI4RTIyM0IwMDIyMDNGNyAvKiB1bnRpdGxl
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMUNC
MDExMjhFMjIzQjAwMjIwM0Y3IC8qIHVudGl0bGVkLmggKi87IH07CiAJCTUxMjkzNUQ3MTI4OEQx
OTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1RDUxMjg4RDE5NDAwQTRCNjk1IC8qIFdl
YkNvbnRleHRNZW51SXRlbS5jcHAgKi87IH07CiAJCTUxMjkzNUQ4MTI4OEQxOTQwMEE0QjY5NSAv
KiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0
ZW0uaCAqLzsgfTsKIAkJNTEyOTM1RTMxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMjkzNUUxMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi87IH07CiAJCTUxMjkzNUU0MTI4OEQ5NzgwMEE0
QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1RTIxMjg4RDk3ODAwQTRC
Njk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTUx
NTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyogV2Vi
RGF0YS5oICovOyB9OworCQk1MTY1OEJGRjEyOERDQzkxMDBDN0I4QTYgLyogV2ViQVBJQ29udGV4
dE1lbnVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE2NThCRkQxMjhEQ0M5MTAwQzdCOEE2IC8qIFdlYkFQSUNvbnRleHRNZW51Q2xpZW50
LmNwcCAqLzsgfTsKKwkJNTE2NThDMDAxMjhEQ0M5MTAwQzdCOEE2IC8qIFdlYkFQSUNvbnRleHRN
ZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTY1OEJGRTEyOERDQzkxMDBDN0I4QTYgLyogV2ViQVBJQ29udGV4dE1lbnVDbGllbnQuaCAq
LzsgfTsKIAkJNTE2QTRBNUQxMjBBMkNDRDAwQzA1QjdGIC8qIFdlYkVycm9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZBNEE1QjEyMEEyQ0NEMDBD
MDVCN0YgLyogV2ViRXJyb3IuaCAqLzsgfTsKIAkJNTE4NzFCNUIxMjdDQjg5RDAwRjc2MjMyIC8q
IFdlYkNvbnRleHRNZW51LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAg
Ki87IH07CiAJCTUxODcxQjVDMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNUExMjdD
Qjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi87IH07CisJCTUxQTU1NUY1MTI4QzZD
NDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE1NTVGMzEyOEM2QzQ3MDA5QUJDRUMgLyogV0tD
b250ZXh0TWVudUl0ZW0uY3BwICovOyB9OworCQk1MUE1NTVGNjEyOEM2QzQ3MDA5QUJDRUMgLyog
V0tDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxQTU1NUY0MTI4QzZDNDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5o
ICovOyB9OworCQk1MUE1NTYwMTEyOEM2RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW1U
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFB
NTU2MDAxMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCAqLzsgfTsK
IAkJNTFBN0YyRjMxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTdGMkYyMTI1QkY4MjAwMDhBRUIxRCAv
KiBMb2dnaW5nLmggKi87IH07CiAJCTUxQTdGMkY1MTI1QkY4RDQwMDhBRUIxRCAvKiBMb2dnaW5n
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTdG
MkY0MTI1QkY4RDQwMDhBRUIxRCAvKiBMb2dnaW5nLmNwcCAqLzsgfTsKIAkJNTFBODRDRTMxMjdG
Mzg2QjAwQ0E2RUE0IC8qIFdlYkNvbnRleHRNZW51UHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBODRDRTIxMjdGMzg2QjAwQ0E2RUE0IC8q
IFdlYkNvbnRleHRNZW51UHJveHkuY3BwICovOyB9OwpAQCAtNzU0LDE0ICs3NjAsMjAgQEAKIAkJ
MzJEQkNGNUUwMzcwQURFRTAwQzkxNzgzIC8qIFdlYktpdDJQcmVmaXguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0MlByZWZpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTBGQkI5ODEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVt
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0
TWVudUl0ZW1EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwRkJCOTkx
Mjg4Qzk1RTAwQUZGREY0IC8qIFdlYkNvbnRleHRNZW51SXRlbURhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTExQ0IwMTEyOEUyMjNCMDAyMjAzRjcgLyogdW50aXRsZWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gdW50aXRsZWQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyOTM1RDUxMjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRl
eHRNZW51SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJD
b250ZXh0TWVudUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTI5MzVE
NjEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTI5MzVFMTEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQ
YWdlQ29udGV4dE1lbnVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTI5MzVFMjEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE1NzhCODIxMjA5RUNFRjAwQTM3QzRBIC8qIFdlYkRhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTY1OEJGRDEyOERDQzkxMDBDN0I4QTYgLyogV2ViQVBJQ29udGV4
dE1lbnVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
QVBJQ29udGV4dE1lbnVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTY1OEJGRTEyOERDQzkxMDBDN0I4QTYgLyogV2ViQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQVBJQ29udGV4dE1lbnVDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8q
IFdlYkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkVycm9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcx
QjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUE1NTVGMzEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUE1NTVGNDEyOEM2QzQ3MDA5QUJD
RUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tDb250ZXh0TWVudUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFB
NTU2MDAxMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE3RjJGMjEyNUJGODIwMDA4QUVCMUQgLyogTG9n
Z2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnaW5nLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTdGMkY0MTI1QkY4RDQwMDhBRUIxRCAvKiBMb2dn
aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvZ2dpbmcuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE4NENFMjEyN0YzODZCMDBDQTZFQTQg
LyogV2ViQ29udGV4dE1lbnVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJDb250ZXh0TWVudVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExNDksNiArMTE2MSw3IEBACiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBX
ZWJLaXQyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1
MTExQ0IwMTEyOEUyMjNCMDAyMjAzRjcgLyogdW50aXRsZWQuaCAqLywKIAkJCQlDMENFNzJEQjEy
NDdFOEY3MDBCQzBFQzQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywKIAkJCQlCQzJFNkU3NDEx
NDE5NkYwMDBBNjNCMUUgLyogUGxhdGZvcm0gKi8sCiAJCQkJMUEwRUM2QjAxMjRCQkQzNjAwN0VG
NEE1IC8qIFBsdWdpblByb2Nlc3MgKi8sCkBAIC0xNjM5LDYgKzE2NTIsOCBAQAogCQkJCTFBMzAw
NjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJMUEw
RjI5RTExMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwICovLAogCQkJ
CTFBMEYyOUUyMTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1Byb3ZpZGVyLmggKi8sCisJ
CQkJNTE2NThCRkQxMjhEQ0M5MTAwQzdCOEE2IC8qIFdlYkFQSUNvbnRleHRNZW51Q2xpZW50LmNw
cCAqLywKKwkJCQk1MTY1OEJGRTEyOERDQzkxMDBDN0I4QTYgLyogV2ViQVBJQ29udGV4dE1lbnVD
bGllbnQuaCAqLywKIAkJCQlCQzcyQkExQjExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0Zvcndh
cmRMaXN0LmNwcCAqLywKIAkJCQlCQzcyQkExQzExRTY0OTA3MDAxRUI0RUEgLyogV2ViQmFja0Zv
cndhcmRMaXN0LmggKi8sCiAJCQkJQkM2NDZCRjUxMUREMzc3QjAwNjQ1NUIwIC8qIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwICovLApAQCAtMjA0Miw2ICsyMDU3LDkgQEAKIAkJCQlCQ0REQjMx
NjEyNEVCRDEzMDA0OEQxM0MgLyogV0tCYXNlLmggKi8sCiAJCQkJQkM0MDc1RDkxMjRGRjAyNzAw
NjhGMjBBIC8qIFdLQ2VydGlmaWNhdGVJbmZvLmNwcCAqLywKIAkJCQlCQzQwNzVEQTEyNEZGMDI3
MDA2OEYyMEEgLyogV0tDZXJ0aWZpY2F0ZUluZm8uaCAqLywKKwkJCQk1MUE1NTVGMzEyOEM2QzQ3
MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uY3BwICovLAorCQkJCTUxQTU1NUY0MTI4QzZD
NDcwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oICovLAorCQkJCTUxQTU1NjAwMTI4QzZE
OTIwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbVR5cGVzLmggKi8sCiAJCQkJQkM0MDc1REIx
MjRGRjAyNzAwNjhGMjBBIC8qIFdLRGF0YS5jcHAgKi8sCiAJCQkJQkM0MDc1REMxMjRGRjAyNzAw
NjhGMjBBIC8qIFdLRGF0YS5oICovLAogCQkJCUJDNDA3NUREMTI0RkYwMjcwMDY4RjIwQSAvKiBX
S0RpY3Rpb25hcnkuY3BwICovLApAQCAtMjQwMiw5ICsyNDIwLDEzIEBACiAJCQkJNTEyOTM1RTQx
Mjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RDcyQzEyODhDQUFEMDBDRkQwOEMgLyogV2ViRG93bmxv
YWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAv
KiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUE1NTVGNjEyOEM2QzQ3MDA5QUJD
RUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQTU1NjAxMTI4
QzZEOTIwMDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbVR5cGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0VFN0RDNTEyOEI2NDVEMDA5ODI3REEgLyogSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUVEODJBN0YyMTI4QzZGQUYwMDQ0NzdCMyAvKiBXS0J1bmRsZVBh
Z2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIg
LyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE2NThD
MDAxMjhEQ0M5MTAwQzdCOEE2IC8qIFdlYkFQSUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MTExQ0IwMjEyOEUyMjNCMDAyMjAzRjcgLyogdW50aXRsZWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMjc1NywxMCArMjc3OSwxMiBAQAogCQkJCTUxMjkzNUUzMTI4OEQ5NzgwMEE0
QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUI3RDcyRDEyODhDQUFEMDBDRkQwOEMgLyogV2ViRG93bmxvYWRDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0Q3OEUxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93
bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFBNTU1RjUxMjhDNkM0NzAwOUFCQ0VDIC8q
IFdLQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUU3REM2MTI4QjY0
NUQwMDk4MjdEQSAvKiBJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQ0E4QjkzNjEyN0M3NzRFMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQ0E4Qjk0NTEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBOEI5NTQxMjdD
ODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUx
NjU4QkZGMTI4RENDOTEwMEM3QjhBNiAvKiBXZWJBUElDb250ZXh0TWVudUNsaWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFRENBNzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50LmNwcAkocmV2aXNpb24gNzE5NTUpCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNCArMzgsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIEluamVjdGVkQnVuZGxlUGFnZUNvbnRl
eHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKiBwYWdl
LCBXZWJDb3JlOjpDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhPiYgbmV3TWVudSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqIHBhZ2UsIEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgY29uc3QgVmVjdG9yPFdlYkNv
bnRleHRNZW51SXRlbURhdGE+JiBkZWZhdWx0TWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bURhdGE+JiBuZXdNZW51LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYg
KCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21EZWZhdWx0TWVudSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gaGl0VGVz
dFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGRlZmF1bHRNZW51
LT5oaXRUZXN0UmVzdWx0KCkpOwotICAgIAotICAgIFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW0+IGNvcmVJdGVtcyA9IFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVZlY3RvcihkZWZhdWx0
TWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKLSAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4gd2ViSXRlbXMgPSBraXRJdGVtcyhjb3JlSXRlbXMsIGRlZmF1bHRNZW51KTsKLQog
ICAgIFJlZlB0cjxNdXRhYmxlQXJyYXk+IGRlZmF1bHRNZW51QXJyYXkgPSBNdXRhYmxlQXJyYXk6
OmNyZWF0ZSgpOwotICAgIGRlZmF1bHRNZW51QXJyYXktPnJlc2VydmVDYXBhY2l0eSh3ZWJJdGVt
cy5zaXplKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJJdGVtcy5zaXplKCk7
ICsraSkKLSAgICAgICAgZGVmYXVsdE1lbnVBcnJheS0+YXBwZW5kKFdlYkNvbnRleHRNZW51SXRl
bTo6Y3JlYXRlKHdlYkl0ZW1zW2ldKS5nZXQoKSk7CisgICAgZGVmYXVsdE1lbnVBcnJheS0+cmVz
ZXJ2ZUNhcGFjaXR5KGRlZmF1bHRNZW51LnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGRlZmF1bHRNZW51LnNpemUoKTsgKytpKQorICAgICAgICBkZWZhdWx0TWVudUFycmF5
LT5hcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoZGVmYXVsdE1lbnVbaV0pLmdldCgp
KTsKIAogICAgIFdLQXJyYXlSZWYgbmV3TWVudVdLID0gMDsKLSAgICBtX2NsaWVudC5nZXRDb250
ZXh0TWVudUZyb21EZWZhdWx0TWVudSh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3VsdC5n
ZXQoKSksIHRvQVBJKGRlZmF1bHRNZW51QXJyYXkuZ2V0KCkpLCAmbmV3TWVudVdLLCBtX2NsaWVu
dC5jbGllbnRJbmZvKTsKKyAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1f
Y2xpZW50LmdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51KHRvQVBJKHBhZ2UpLCB0b0FQSSho
aXRUZXN0UmVzdWx0KSwgdG9BUEkoZGVmYXVsdE1lbnVBcnJheS5nZXQoKSksICZuZXdNZW51V0ss
ICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CiAgICAgUmVmUHRyPEltbXV0
YWJsZUFycmF5PiBhcnJheSA9IGFkb3B0UmVmKHRvSW1wbChuZXdNZW51V0spKTsKKyAgICB1c2Vy
RGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogICAgIAogICAgIG5ld01l
bnUuY2xlYXIoKTsKICAgICAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0
TWVudUNsaWVudC5oCShyZXZpc2lvbiA3MTk1NSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwxMiArMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorY2xhc3MgQVBJT2JqZWN0OworY2xhc3MgSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0OwogY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKIGNsYXNzIFdlYlBhZ2U7
CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50IDogcHVibGljIEFQ
SUNsaWVudDxXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudD4gewogcHVibGljOgotICAgIGJv
b2wgZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoV2ViUGFnZSosIFdlYkNvcmU6OkNvbnRl
eHRNZW51KiBkZWZhdWx0TWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBuZXdN
ZW51KTsKKyAgICBib29sIGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqLCBJ
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQqLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJ
dGVtRGF0YT4mIGRlZmF1bHRNZW51LCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIG5l
d01lbnUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHJldmlzaW9uIDcxOTU1KQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODIsNyArMTgyLDcgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUZvcm1DbGllbnQgewog
dHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlRm9ybUNsaWVudCBXS0J1bmRsZVBhZ2VGb3JtQ2xp
ZW50OwogCiAvLyBDb250ZXh0TWVudSBjbGllbnQKLXR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFn
ZUdldENvbnRleHRNZW51RnJvbURlZmF1bHRDb250ZXh0TWVudUNhbGxiYWNrKShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHQsIFdLQXJy
YXlSZWYgZGVmYXVsdE1lbnUsIFdLQXJyYXlSZWYqIG5ld01lbnUsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlR2V0Q29udGV4dE1lbnVGcm9tRGVm
YXVsdENvbnRleHRNZW51Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUhp
dFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCwgV0tBcnJheVJlZiBkZWZhdWx0TWVudSwgV0tB
cnJheVJlZiogbmV3TWVudSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiAKIHN0cnVjdCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCB7CiAgICAgaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCShyZXZpc2lvbiA3MTk1
NSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEyICs0Myw4IEBAIHZvaWQgV2ViQ29udGV4
dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51RGUKIAogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gV2Vi
Q29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKENvbnRleHRN
ZW51KiBtZW51KQogewotICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBuZXdNZW51
OwotICAgIGlmICghbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCkuZ2V0
Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMobV9wYWdlLCBtZW51LCBuZXdNZW51KSkKLSAgICAg
ICAgcmV0dXJuIG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKTsKLSAgICAKLSAgICBWZWN0b3I8
Q29udGV4dE1lbnVJdGVtPiBjb3JlSXRlbVZlY3RvciA9IGNvcmVJdGVtcyhuZXdNZW51KTsKLSAg
ICByZXR1cm4gcGxhdGZvcm1NZW51RGVzY3JpcHRpb24oY29yZUl0ZW1WZWN0b3IpOworICAgIC8v
IFdlYktpdDIgaWdub3JlcyB0aGlzIGNsaWVudCBjYWxsYmFjayBhbmQgZG9lcyBjb250ZXh0IG1l
bnUgY3VzdG9taXphdGlvbiB3aGVuIGl0IGlzIHRvbGQgdG8gc2hvdyB0aGUgbWVudS4KKyAgICBy
ZXR1cm4gbWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpOwogfQogCiB2b2lkIFdlYkNvbnRleHRN
ZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBjb25z
dCBDb250ZXh0TWVudSopCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250
ZXh0TWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29udGV4dE1lbnUuY3BwCShyZXZpc2lvbiA3MTk1NSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBA
QAogCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIKIAorI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKQEAgLTU4LDEwICs1OSwxNiBAQCB2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFBvaW50IHBvaW50ID0gdmlldy0+
Y29udGVudHNUb1dpbmRvdyhtZW51LT5oaXRUZXN0UmVzdWx0KCkucG9pbnQoKSk7Ci0gICAgVmVj
dG9yPENvbnRleHRNZW51SXRlbT4gaXRlbXMgPSBjb250ZXh0TWVudUl0ZW1WZWN0b3IobWVudS0+
cGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKKyAgICAvLyBHaXZlIHRoZSBidW5kbGUgY2xpZW50IGEg
Y2hhbmNlIHRvIHByb2Nlc3MgdGhlIG1lbnUuCisgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4g
Y29yZUl0ZW1zID0gY29udGV4dE1lbnVJdGVtVmVjdG9yKG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRp
b24oKSk7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IHByb3Bvc2VkTWVudSA9
IGtpdEl0ZW1zKGNvcmVJdGVtcywgbWVudSk7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bURhdGE+IG5ld01lbnU7CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgaWYg
KG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpLmdldEN1c3RvbU1lbnVG
cm9tRGVmYXVsdEl0ZW1zKG1fcGFnZSwgMCwgcHJvcG9zZWRNZW51LCBuZXdNZW51LCB1c2VyRGF0
YSkpCisgICAgICAgIHByb3Bvc2VkTWVudSA9IG5ld01lbnU7CiAKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51KHBvaW50LCBraXRJdGVtcyhp
dGVtcywgbWVudSkpKTsKKyAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51KHZpZXctPmNvbnRl
bnRzVG9XaW5kb3cobWVudS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50KCkpLCBwcm9wb3NlZE1lbnUs
IEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQog
CiB2b2lkIFdlYkNvbnRleHRNZW51OjppdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJ
dGVtRGF0YSYgaXRlbSkKSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA3MTk1NSkKKysrIFdl
YktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NjgsNiArNjY4LDE4
IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxTaGFyZWRcQVBJXGNcV0tDb250ZXh0TWVudUl0ZW0uY3BwIg0KKwkJCQkJPg0KKwkJCQk8
L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1xX
S0NvbnRleHRNZW51SXRlbS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1xXS0NvbnRleHRNZW51SXRlbVR5cGVz
LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cU2hhcmVkXEFQSVxjXHdpblxXS0NlcnRpZmljYXRlSW5mb1dpbi5jcHAiDQogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCkBAIC0xNzIxLDYgKzE3MzMsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdlYkFQSUNvbnRl
eHRNZW51Q2xpZW50LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xXZWJBUElDb250ZXh0TWVudUNsaWVudC5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9j
ZXNzXFdlYkJhY2tGb3J3YXJkTGlzdC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQo=
</data>
<flag name="review"
          id="64303"
          type_id="1"
          status="-"
          setter="sam"
    />
    <flag name="commit-queue"
          id="64304"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73912</attachid>
            <date>2010-11-15 10:46:07 -0800</date>
            <delta_ts>2010-11-15 12:45:37 -0800</delta_ts>
            <desc>v2 - Incorporated Sam&apos;s feedback</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>72044</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MjAxMikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMTEtMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
bmlzaCBvZmYgPHJkYXI6Ly9wcm9ibGVtLzg2MTM3Mjc+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3MjAKKyAgICAgICAgQ3VzdG9taXphYmxlIGNvbnRleHQg
bWVudSBzdXBwb3J0IGluIFdlYktpdDIuCisKKyAgICAgICAgLSBBZGRzIGFuIEFQSS1sZXZlbCBX
S0NvbnRleHRNZW51SXRlbS4KKyAgICAgICAgLSBSb3VuZCB0cmlwcyB0aHJvdWdoIGJvdGggdGhl
IEluamVjdGVkQnVuZGxlIGNsaWVudCBhbmQgdGhlIG5ldyBQYWdlQ29udGV4dE1lbnVDbGllbnQg
YmVmb3JlCisgICAgICAgICAgYWN0dWFsbHkgZGlzcGxheWluZyB0aGUgbWVudS4KKworICAgICAg
ICAqIFdlYktpdDIucHJvOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVt
LmNwcDogQWRkZWQuCisgICAgICAgIChXS0NvbnRleHRNZW51SXRlbUdldFR5cGVJRCk6CisgICAg
ICAgIChXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzQWN0aW9uKToKKyAgICAgICAgKFdLQ29udGV4
dE1lbnVJdGVtQ3JlYXRlQXNDaGVja2FibGVBY3Rpb24pOgorICAgICAgICAoV0tDb250ZXh0TWVu
dUl0ZW1DcmVhdGVBc1N1Ym1lbnUpOgorICAgICAgICAoV0tDb250ZXh0TWVudUl0ZW1TZXBhcmF0
b3JJdGVtKToKKyAgICAgICAgKFdLQ29udGV4dE1lbnVJdGVtR2V0VGFnKToKKyAgICAgICAgKFdL
Q29udGV4dE1lbnVJdGVtR2V0VHlwZSk6CisgICAgICAgIChXS0NvbnRleHRNZW51SXRlbUNvcHlU
aXRsZSk6CisgICAgICAgIChXS0NvbnRleHRNZW51SXRlbUdldEVuYWJsZWQpOgorICAgICAgICAo
V0tDb250ZXh0TWVudUl0ZW1HZXRDaGVja2VkKToKKyAgICAgICAgKFdLQ29udGV4dE1lbnVDb3B5
U3VibWVudUl0ZW1zKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0u
aDogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtVHlwZXMu
aDogQWRkZWQuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKFdlYktpdDo6dG9JbXBsKToKKworICAg
ICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRN
ZW51SXRlbTo6c2VwYXJhdG9ySXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51
SXRlbTo6c3VibWVudUl0ZW1zQXNJbW11dGFibGVBcnJheSk6CisgICAgICAgICogU2hhcmVkL1dl
YkNvbnRleHRNZW51SXRlbS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQpOgorICAgICAgICAo
V0tQYWdlU2V0UGFnZUZpbmRDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNs
aWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KToKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmdldENvbnRl
eHRNZW51RnJvbVByb3Bvc2VkTWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VDb250
ZXh0TWVudUNsaWVudC5oOiBBZGRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmluaXRpYWxpemVDb250ZXh0
TWVudUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRN
ZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Ojpn
ZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJv
bURlZmF1bHRJdGVtcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRN
ZW51LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnU6OnNob3cpOgorCiAyMDEw
LTExLTE1ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQy
L1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9u
IDcyMDEyKQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjAwLDYg
KzIwMCw4IEBAIEhFQURFUlMgKz0gXAogICAgIFBsYXRmb3JtL3F0L01hcHBlZE1lbW9yeVBvb2wu
aCBcCiAgICAgU2hhcmVkL0FQSS9jL1dLQmFzZS5oIFwKICAgICBTaGFyZWQvQVBJL2MvV0tDZXJ0
aWZpY2F0ZUluZm8uaCBcCisgICAgU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmggXAor
ICAgIFNoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmggXAogICAgIFNoYXJlZC9B
UEkvYy9XS0dlb21ldHJ5LmggXAogICAgIFNoYXJlZC9BUEkvYy9XS051bWJlci5oIFwKICAgICBT
aGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBcCkBAIC0zMDIsNiArMzA0LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggXAogICAg
IFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYk5hdmlnYXRp
b25EYXRhLmggXAorICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBcCiAg
ICAgVUlQcm9jZXNzL1dlYlBhZ2VOYW1lc3BhY2UuaCBcCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIFwKICAgICBVSVByb2Nlc3MvV2ViUG9saWN5Q2xpZW50LmggXApAQCAtMzg1LDYgKzM4
OCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFBsYXRmb3JtL3F0L1dvcmtRdWV1ZVF0LmNwcCBcCiAg
ICAgU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tDZXJ0aWZp
Y2F0ZUluZm8uY3BwIFwKKyAgICBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwIFwK
ICAgICBTaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIFwKICAgICBTaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwIFwK
QEAgLTQ3NCw2ICs0NzgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcCBcCiAgICAg
VUlQcm9jZXNzL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBcCisgICAgVUlQcm9jZXNzL1dlYlBhZ2VD
b250ZXh0TWVudUNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlTmFtZXNwYWNlLmNw
cCBcCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJQ
b2xpY3lDbGllbnQuY3BwIFwKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRl
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNw
cAkocmV2aXNpb24gNzIwMTIpCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw5IEBACiAgCiAjaW5jbHVkZSAiV2ViQ29u
dGV4dE1lbnVJdGVtLmgiCiAKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ29udGV4dE1lbnVJdGVtLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJD
b250ZXh0TWVudUl0ZW06OldlYkNvbnRleHRNZW51SXRlbShjb25zdCBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhJiBkYXRhKQpAQCAtMzIsNSArMzUsNDQgQEAgV2ViQ29udGV4dE1lbnVJdGVtOjpXZWJD
b250ZXh0TWVudUl0ZW0oYwogewogfQogCitQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4g
V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgYm9vbCBlbmFi
bGVkLCBJbW11dGFibGVBcnJheSogc3VibWVudUl0ZW1zKQoreworICAgIHNpemVfdCBzaXplID0g
c3VibWVudUl0ZW1zLT5zaXplKCk7CisgICAgCisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bURhdGE+IHN1Ym1lbnU7CisgICAgc3VibWVudS5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CisgICAg
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgV2ViQ29u
dGV4dE1lbnVJdGVtKiBpdGVtID0gc3VibWVudUl0ZW1zLT5hdDxXZWJDb250ZXh0TWVudUl0ZW0+
KGkpOworICAgICAgICBpZiAoaXRlbSkKKyAgICAgICAgICAgIHN1Ym1lbnUuYXBwZW5kKCppdGVt
LT5kYXRhKCkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRl
eHRNZW51SXRlbShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ05vQWN0aW9uLCB0aXRsZSwgZW5hYmxlZCwgc3VibWVudSkpKS5sZWFrUmVmKCk7Cit9CisK
K1dlYkNvbnRleHRNZW51SXRlbSogV2ViQ29udGV4dE1lbnVJdGVtOjpzZXBhcmF0b3JJdGVtKCkK
K3sKKyAgICBzdGF0aWMgUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gc2VwYXJhdG9ySXRlbSA9
IGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0TWVudUl0ZW0oV2ViQ29udGV4dE1lbnVJdGVtRGF0YShX
ZWJDb3JlOjpTZXBhcmF0b3JUeXBlLCBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlv
biwgU3RyaW5nKCksIHRydWUsIGZhbHNlKSkpOworICAgIHJldHVybiBzZXBhcmF0b3JJdGVtLmdl
dCgpOworfQorCitQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJDb250ZXh0TWVudUl0ZW06
OnN1Ym1lbnVJdGVtc0FzSW1tdXRhYmxlQXJyYXkoKSBjb25zdAoreyAgICAKKyAgICBpZiAobV93
ZWJDb250ZXh0TWVudUl0ZW1EYXRhLnR5cGUoKSAhPSBXZWJDb3JlOjpTdWJtZW51VHlwZSkKKyAg
ICAgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKKworICAgIGNvbnN0IFZlY3Rv
cjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgc3VibWVudVZlY3RvcihtX3dlYkNvbnRleHRNZW51
SXRlbURhdGEuc3VibWVudSgpKTsKKyAgICB1bnNpZ25lZCBzaXplID0gc3VibWVudVZlY3Rvci5z
aXplKCk7CisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gcmVzdWx0OworICAg
IHJlc3VsdC5yZXNlcnZlQ2FwYWNpdHkoc2l6ZSk7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChXZWJDb250ZXh0TWVu
dUl0ZW06OmNyZWF0ZShzdWJtZW51VmVjdG9yW2ldKSk7CisgICAgCisgICAgcmV0dXJuIEltbXV0
YWJsZUFycmF5OjphZG9wdChyZXN1bHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApJ
bmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgJKHJldmlzaW9uIDcyMDEyKQorKysg
V2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEltbXV0YWJsZUFycmF5
OworCiBjbGFzcyBXZWJDb250ZXh0TWVudUl0ZW0gOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUNvbnRleHRNZW51SXRlbTsK
QEAgLTM5LDYgKzQxLDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViQ29udGV4dE1lbnVJdGVtKGRhdGEpKTsKICAgICB9CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgYm9v
bCBlbmFibGVkLCBJbW11dGFibGVBcnJheSogc3VibWVudUl0ZW1zKTsKKyAgICBzdGF0aWMgV2Vi
Q29udGV4dE1lbnVJdGVtKiBzZXBhcmF0b3JJdGVtKCk7CisgICAgCisgICAgUGFzc1JlZlB0cjxJ
bW11dGFibGVBcnJheT4gc3VibWVudUl0ZW1zQXNJbW11dGFibGVBcnJheSgpIGNvbnN0OwogICAg
IAogICAgIFdlYkNvbnRleHRNZW51SXRlbURhdGEqIGRhdGEoKSB7IHJldHVybiAmbV93ZWJDb250
ZXh0TWVudUl0ZW1EYXRhOyB9CiAKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiA3
MjAxMikKKysrIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRGljdGlvbmFyeSoK
IHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLRGljdGlvbmFyeSogV0tNdXRhYmxlRGljdGlvbmFyeVJl
ZjsKIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCb29sZWFuKiBXS0Jvb2xlYW5SZWY7
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0NvbnRleHRNZW51SXRlbSogV0tDb250ZXh0
TWVudUl0ZW1SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0RhdGEqIFdLRGF0YVJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRG91YmxlKiBXS0RvdWJsZVJlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLRXJyb3IqIFdLRXJyb3JSZWY7CkluZGV4OiBXZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldLQ29udGV4dE1lbnVJdGVt
LmgiCisKKyNpbmNsdWRlICJNdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVu
dUl0ZW0uaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCisjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlE
IFdLQ29udGV4dE1lbnVJdGVtR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2ViQ29u
dGV4dE1lbnVJdGVtOjpBUElUeXBlKTsKK30KKworV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250
ZXh0TWVudUl0ZW1DcmVhdGVBc0FjdGlvbihXS0NvbnRleHRNZW51SXRlbVRhZyB0YWcsIFdLU3Ry
aW5nUmVmIHRpdGxlLCBib29sIGVuYWJsZWQpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYkNvbnRl
eHRNZW51SXRlbTo6Y3JlYXRlKFdlYkNvbnRleHRNZW51SXRlbURhdGEoQWN0aW9uVHlwZSwgdG9J
bXBsKHRhZyksIHRvSW1wbCh0aXRsZSktPnN0cmluZygpLCBlbmFibGVkLCBmYWxzZSkpLmxlYWtS
ZWYoKSk7Cit9CisKK1dLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3JlYXRl
QXNDaGVja2FibGVBY3Rpb24oV0tDb250ZXh0TWVudUl0ZW1UYWcgdGFnLCBXS1N0cmluZ1JlZiB0
aXRsZSwgYm9vbCBlbmFibGVkLCBib29sIGNoZWNrZWQpCit7CisgICAgcmV0dXJuIHRvQVBJKFdl
YkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKFdlYkNvbnRleHRNZW51SXRlbURhdGEoQ2hlY2thYmxl
QWN0aW9uVHlwZSwgdG9JbXBsKHRhZyksIHRvSW1wbCh0aXRsZSktPnN0cmluZygpLCBlbmFibGVk
LCBjaGVja2VkKSkubGVha1JlZigpKTsKK30KKworV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250
ZXh0TWVudUl0ZW1DcmVhdGVBc1N1Ym1lbnUoV0tTdHJpbmdSZWYgdGl0bGUsIGJvb2wgZW5hYmxl
ZCwgV0tBcnJheVJlZiBzdWJtZW51SXRlbXMpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYkNvbnRl
eHRNZW51SXRlbTo6Y3JlYXRlKHRvSW1wbCh0aXRsZSktPnN0cmluZygpLCBlbmFibGVkLCB0b0lt
cGwoc3VibWVudUl0ZW1zKSkubGVha1JlZigpKTsKK30KKworV0tDb250ZXh0TWVudUl0ZW1SZWYg
V0tDb250ZXh0TWVudUl0ZW1TZXBhcmF0b3JJdGVtKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2Vi
Q29udGV4dE1lbnVJdGVtOjpzZXBhcmF0b3JJdGVtKCkpOworfQorCitXS0NvbnRleHRNZW51SXRl
bVRhZyBXS0NvbnRleHRNZW51SXRlbUdldFRhZyhXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVm
KQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS0+YWN0aW9uKCkp
OworfQorCitXS0NvbnRleHRNZW51SXRlbVR5cGUgV0tDb250ZXh0TWVudUl0ZW1HZXRUeXBlKFdL
Q29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChp
dGVtUmVmKS0+ZGF0YSgpLT50eXBlKCkpOworfQorCitXS1N0cmluZ1JlZiBXS0NvbnRleHRNZW51
SXRlbUNvcHlUaXRsZShXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQoreworICAgIHJldHVy
biB0b0NvcGllZEFQSSh0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS0+dGl0bGUoKS5pbXBsKCkpOwor
fQorCitib29sIFdLQ29udGV4dE1lbnVJdGVtR2V0RW5hYmxlZChXS0NvbnRleHRNZW51SXRlbVJl
ZiBpdGVtUmVmKQoreworICAgIHJldHVybiB0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS0+ZW5hYmxl
ZCgpOworfQorCitib29sIFdLQ29udGV4dE1lbnVJdGVtR2V0Q2hlY2tlZChXS0NvbnRleHRNZW51
SXRlbVJlZiBpdGVtUmVmKQoreworICAgIHJldHVybiB0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS0+
Y2hlY2tlZCgpOworfQorCitXS0FycmF5UmVmIFdLQ29udGV4dE1lbnVDb3B5U3VibWVudUl0ZW1z
KFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1w
bChpdGVtUmVmKS0+c3VibWVudUl0ZW1zQXNJbW11dGFibGVBcnJheSgpLmxlYWtSZWYoKSk7Cit9
CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmgJKHJldmlzaW9u
IDApCisrKyBXZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NvbnRleHRNZW51
SXRlbV9oCisjZGVmaW5lIFdLQ29udGV4dE1lbnVJdGVtX2gKKworI2luY2x1ZGUgPFdlYktpdDIv
V0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdL
VHlwZUlEIFdLQ29udGV4dE1lbnVJdGVtR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS0NvbnRl
eHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzQWN0aW9uKFdLQ29udGV4dE1l
bnVJdGVtVGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVkKTsKK1dLX0VYUE9SVCBX
S0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzQ2hlY2thYmxlQWN0
aW9uKFdLQ29udGV4dE1lbnVJdGVtVGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVk
LCBib29sIGNoZWNrZWQpOworV0tfRVhQT1JUIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4
dE1lbnVJdGVtQ3JlYXRlQXNTdWJtZW51KFdLU3RyaW5nUmVmIHRpdGxlLCBib29sIGVuYWJsZWQs
IFdLQXJyYXlSZWYgc3VibWVudUl0ZW1zKTsKK1dLX0VYUE9SVCBXS0NvbnRleHRNZW51SXRlbVJl
ZiBXS0NvbnRleHRNZW51SXRlbVNlcGFyYXRvckl0ZW0oKTsKKworV0tfRVhQT1JUIFdLQ29udGV4
dE1lbnVJdGVtVGFnIFdLQ29udGV4dE1lbnVJdGVtR2V0VGFnKFdLQ29udGV4dE1lbnVJdGVtUmVm
KTsKK1dLX0VYUE9SVCBXS0NvbnRleHRNZW51SXRlbVR5cGUgV0tDb250ZXh0TWVudUl0ZW1HZXRU
eXBlKFdLQ29udGV4dE1lbnVJdGVtUmVmKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0NvbnRl
eHRNZW51SXRlbUNvcHlUaXRsZShXS0NvbnRleHRNZW51SXRlbVJlZik7CitXS19FWFBPUlQgYm9v
bCBXS0NvbnRleHRNZW51SXRlbUdldEVuYWJsZWQoV0tDb250ZXh0TWVudUl0ZW1SZWYpOworV0tf
RVhQT1JUIGJvb2wgV0tDb250ZXh0TWVudUl0ZW1HZXRDaGVja2VkKFdLQ29udGV4dE1lbnVJdGVt
UmVmKTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQ29udGV4dE1lbnVDb3B5U3VibWVudUl0ZW1z
KFdLQ29udGV4dE1lbnVJdGVtUmVmKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYK
KworI2VuZGlmIC8qIFdLQ29udGV4dE1lbnVJdGVtX2ggKi8KSW5kZXg6IFdlYktpdDIvU2hhcmVk
L0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmgJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbVR5cGVzLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NvbnRleHRNZW51SXRlbVR5
cGVzX2gKKyNkZWZpbmUgV0tDb250ZXh0TWVudUl0ZW1UeXBlc19oCisKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSB7CisgICAga1dLQ29udGV4dE1lbnVJ
dGVtVGFnTm9BY3Rpb24gPSAwLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5O
ZXdXaW5kb3csCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrLAor
ICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQsCisgICAga1dLQ29u
dGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3csCisgICAga1dLQ29udGV4dE1lbnVJ
dGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdDb3B5
SW1hZ2VUb0NsaXBib2FyZCwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5l
d1dpbmRvdywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdDb3B5LAorICAgIGtXS0NvbnRleHRN
ZW51SXRlbVRhZ0dvQmFjaywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQsCisg
ICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU3RvcCwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdS
ZWxvYWQsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnQ3V0LAorICAgIGtXS0NvbnRleHRNZW51
SXRlbVRhZ1Bhc3RlLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3MsCisg
ICAga1dLQ29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQsCisgICAga1dLQ29udGV4dE1l
bnVJdGVtVGFnSWdub3JlU3BlbGxpbmcsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnTGVhcm5T
cGVsbGluZywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdPdGhlciwKKyAgICBrV0tDb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodCwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdT
ZWFyY2hXZWIsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5LAor
ICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ09wZW5XaXRoRGVmYXVsdEFwcGxpY2F0aW9uLAorICAg
IGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERkFjdHVhbFNpemUsCisgICAga1dLQ29udGV4dE1lbnVJ
dGVtVGFnUERGWm9vbUluLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERlpvb21PdXQsCisg
ICAga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGQXV0b1NpemUsCisgICAga1dLQ29udGV4dE1lbnVJ
dGVtVGFnUERGU2luZ2xlUGFnZSwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQ
YWdlcywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZDb250aW51b3VzLAorICAgIGtXS0Nv
bnRleHRNZW51SXRlbVRhZ1BERk5leHRQYWdlLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BE
RlByZXZpb3VzUGFnZSwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaywKKyAgICBr
V0tDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyLAorICAgIGtXS0NvbnRleHRNZW51SXRl
bVRhZ1NwZWxsaW5nTWVudSwgCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5n
UGFuZWwsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZywKKyAgICBrV0tD
b250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcsCisgICAga1dLQ29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nLAorICAgIGtXS0NvbnRleHRNZW51
SXRlbVRhZ0ZvbnRNZW51LCAKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMsCisg
ICAga1dLQ29udGV4dE1lbnVJdGVtVGFnQm9sZCwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdJ
dGFsaWMsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lLAorICAgIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ091dGxpbmUsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU3R5bGVzLAor
ICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xvcnMsCisgICAga1dLQ29udGV4dE1lbnVJ
dGVtVGFnU3BlZWNoTWVudSwgCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2lu
ZywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmcsCisgICAga1dLQ29udGV4
dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUsIAorICAgIGtXS0NvbnRleHRNZW51SXRl
bVRhZ0RlZmF1bHREaXJlY3Rpb24sCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmln
aHQsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQsCisgICAga1dLQ29udGV4
dE1lbnVJdGVtVGFnUERGU2luZ2xlUGFnZVNjcm9sbGluZywKKyAgICBrV0tDb250ZXh0TWVudUl0
ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9sbGluZywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdJ
bnNwZWN0RWxlbWVudCwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVu
dSwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdCwKKyAgICBr
V0tDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQsCisgICAga1dLQ29u
dGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0LAorICAgIGtXS0NvbnRleHRN
ZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHksCisgICAga1dLQ29udGV4dE1l
bnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU2hv
d1N1YnN0aXR1dGlvbnMsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGUs
CisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMsCisgICAga1dLQ29udGV4dE1l
bnVJdGVtVGFnU21hcnREYXNoZXMsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5r
cywKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQsCisgICAga1dLQ29u
dGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudSwKKyAgICBrV0tDb250ZXh0TWVudUl0
ZW1UYWdNYWtlVXBwZXJDYXNlLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNh
c2UsCisgICAga1dLQ29udGV4dE1lbnVJdGVtVGFnQ2FwaXRhbGl6ZSwKKyAgICBrV0tDb250ZXh0
TWVudUl0ZW1UYWdDaGFuZ2VCYWNrLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ09wZW5NZWRp
YUluTmV3V2luZG93LAorICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0Ns
aXBib2FyZCwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzLAor
ICAgIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCwKKyAgICBrV0tDb250ZXh0
TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbiwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1U
YWdNZWRpYVBsYXlQYXVzZSwKKyAgICBrV0tDb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUsCisg
ICAga1dLQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnID0gMTAwMDAKK307Cit0eXBl
ZGVmIHVpbnQzMl90IFdLQ29udGV4dE1lbnVJdGVtVGFnOworCitlbnVtIHsKKyAgICBrV0tDb250
ZXh0TWVudUl0ZW1UeXBlQWN0aW9uLAorICAgIGtXS0NvbnRleHRNZW51SXRlbVR5cGVDaGVja2Fi
bGVBY3Rpb24sCisgICAga1dLQ29udGV4dE1lbnVJdGVtVHlwZVNlcGFyYXRvciwKKyAgICBrV0tD
b250ZXh0TWVudUl0ZW1UeXBlU3VibWVudQorfTsKK3R5cGVkZWYgdWludDMyX3QgV0tDb250ZXh0
TWVudUl0ZW1UeXBlOworICAgIAorI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8qIFdLQ29udGV4dE1lbnVJdGVtVHlwZXNfaCAqLwpJbmRleDogV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tTaGFyZWRBUElDYXN0LmgJKHJldmlzaW9uIDcyMDEyKQorKysgV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgV0tTaGFyZWRBUElDYXN0X2gKIAogI2luY2x1ZGUgIldLQmFzZS5oIgorI2luY2x1
ZGUgIldLQ29udGV4dE1lbnVJdGVtVHlwZXMuaCIKICNpbmNsdWRlICJXS0V2ZW50LmgiCiAjaW5j
bHVkZSAiV0tHZW9tZXRyeS5oIgogI2luY2x1ZGUgIldlYkVycm9yLmgiCkBAIC0zNCw2ICszNSw3
IEBACiAjaW5jbHVkZSAiV2ViTnVtYmVyLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5j
bHVkZSAiV2ViVVJMLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudUl0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KQEAgLTQ2LDYgKzQ4LDcgQEAgY2xhc3Mg
SW1tdXRhYmxlRGljdGlvbmFyeTsKIGNsYXNzIE11dGFibGVBcnJheTsKIGNsYXNzIE11dGFibGVE
aWN0aW9uYXJ5OwogY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvOworY2xhc3MgV2ViQ29udGV4dE1l
bnVJdGVtOwogY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
IGNsYXNzIFdlYlVSTFJlcXVlc3Q7CkBAIC02Miw2ICs2NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IEltcGxUeXBlPiBzdHJ1Y3QgSW1wbFQKIFdLX0FERF9BUElfTUFQUElORyhXS0FycmF5UmVmLCBJ
bW11dGFibGVBcnJheSkKIFdLX0FERF9BUElfTUFQUElORyhXS0Jvb2xlYW5SZWYsIFdlYkJvb2xl
YW4pCiBXS19BRERfQVBJX01BUFBJTkcoV0tDZXJ0aWZpY2F0ZUluZm9SZWYsIFdlYkNlcnRpZmlj
YXRlSW5mbykKK1dLX0FERF9BUElfTUFQUElORyhXS0NvbnRleHRNZW51SXRlbVJlZiwgV2ViQ29u
dGV4dE1lbnVJdGVtKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLRGF0YVJlZiwgV2ViRGF0YSkKIFdL
X0FERF9BUElfTUFQUElORyhXS0RpY3Rpb25hcnlSZWYsIEltbXV0YWJsZURpY3Rpb25hcnkpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tEb3VibGVSZWYsIFdlYkRvdWJsZSkKQEAgLTIzNCw2ICsyMzgs
Mzc1IEBAIGlubGluZSBXS0V2ZW50TW91c2VCdXR0b24gdG9BUEkoV2ViTW91c2UKICAgICByZXR1
cm4gd2tNb3VzZUJ1dHRvbjsKIH0KIAoraW5saW5lIFdLQ29udGV4dE1lbnVJdGVtVGFnIHRvQVBJ
KFdlYkNvcmU6OkNvbnRleHRNZW51QWN0aW9uIGFjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGFjdGlv
bikgeworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb246CisgICAg
ICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbjsKKyAgICBjYXNlIFdlYkNv
cmU6OkNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5OZXdXaW5kb3c6CisgICAgICAgIHJldHVy
biBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93OworICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrOgorICAgICAgICByZXR1
cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrOworICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZDoKKyAgICAgICAgcmV0
dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQ7CisgICAgY2FzZSBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdzoKKyAgICAgICAg
cmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ09wZW5JbWFnZUluTmV3V2luZG93OworICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzazoKKyAgICAg
ICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2s7CisgICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZDoKKyAg
ICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkOwor
ICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3c6
CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRv
dzsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0NvcHk6CisgICAgICAgIHJl
dHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdDb3B5OworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnR29CYWNrOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFn
R29CYWNrOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkOgor
ICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJkOworICAgIGNhc2Ug
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3RvcDoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ1N0b3A7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdS
ZWxvYWQ6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQ7CisgICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDdXQ6CisgICAgICAgIHJldHVybiBrV0tD
b250ZXh0TWVudUl0ZW1UYWdDdXQ7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdQYXN0ZToKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1Bhc3RlOworICAg
IGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVzczoKKyAgICAgICAg
cmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3M7CisgICAgY2FzZSBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZDoKKyAgICAgICAgcmV0dXJuIGtX
S0NvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kOworICAgIGNhc2UgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmc6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0
TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZzsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ0xlYXJuU3BlbGxpbmc6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1U
YWdMZWFyblNwZWxsaW5nOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3Ro
ZXI6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdPdGhlcjsKKyAgICBjYXNl
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0OgorICAgICAgICBy
ZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQ7CisgICAgY2FzZSBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWI6CisgICAgICAgIHJldHVybiBrV0tD
b250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWI7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnk6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnk7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdPcGVuV2l0aERlZmF1bHRBcHBsaWNhdGlvbjoKKyAgICAgICAgcmV0dXJuIGtXS0Nv
bnRleHRNZW51SXRlbVRhZ09wZW5XaXRoRGVmYXVsdEFwcGxpY2F0aW9uOworICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtUERGQWN0dWFsU2l6ZToKKyAgICAgICAgcmV0dXJuIGtXS0Nv
bnRleHRNZW51SXRlbVRhZ1BERkFjdHVhbFNpemU7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1QREZab29tSW46CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdQ
REZab29tSW47CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZab29tT3V0Ogor
ICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGWm9vbU91dDsKKyAgICBjYXNl
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkF1dG9TaXplOgorICAgICAgICByZXR1cm4ga1dL
Q29udGV4dE1lbnVJdGVtVGFnUERGQXV0b1NpemU7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1QREZTaW5nbGVQYWdlOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVt
VGFnUERGU2luZ2xlUGFnZTsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkZh
Y2luZ1BhZ2VzOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5n
UGFnZXM7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZDb250aW51b3VzOgor
ICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGQ29udGludW91czsKKyAgICBj
YXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERk5leHRQYWdlOgorICAgICAgICByZXR1cm4g
a1dLQ29udGV4dE1lbnVJdGVtVGFnUERGTmV4dFBhZ2U7CisgICAgY2FzZSBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1QREZQcmV2aW91c1BhZ2U6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVu
dUl0ZW1UYWdQREZQcmV2aW91c1BhZ2U7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdPcGVuTGluazoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ09wZW5M
aW5rOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcjoK
KyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXI7CisgICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnU6CisgICAgICAgIHJl
dHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnU7CisgICAgY2FzZSBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDoKKyAgICAgICAgcmV0dXJuIGtX
S0NvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsOworICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZzoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmc7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmc6CisgICAgICAgIHJldHVybiBrV0tDb250
ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmc7CisgICAgY2FzZSBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmc6CisgICAgICAgIHJl
dHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmc7CisgICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdGb250TWVudToKKyAgICAgICAgcmV0dXJu
IGtXS0NvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51OworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnU2hvd0ZvbnRzOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVt
VGFnU2hvd0ZvbnRzOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQm9sZDoK
KyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ0JvbGQ7CisgICAgY2FzZSBXZWJD
b3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0
TWVudUl0ZW1UYWdJdGFsaWM7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdV
bmRlcmxpbmU6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU7
CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lOgorICAgICAgICBy
ZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnT3V0bGluZTsKKyAgICBjYXNlIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1N0eWxlczoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRl
bVRhZ1N0eWxlczsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dDb2xv
cnM6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzOworICAg
IGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3BlZWNoTWVudToKKyAgICAgICAgcmV0
dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnU7CisgICAgY2FzZSBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4
dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZzsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ1N0b3BTcGVha2luZzoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRh
Z1N0b3BTcGVha2luZzsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1dyaXRp
bmdEaXJlY3Rpb25NZW51OgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnV3Jp
dGluZ0RpcmVjdGlvbk1lbnU7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdE
ZWZhdWx0RGlyZWN0aW9uOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnRGVm
YXVsdERpcmVjdGlvbjsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0xlZnRU
b1JpZ2h0OgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQ7
CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDoKKyAgICAg
ICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0OworICAgIGNhc2UgV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnUERGU2luZ2xlUGFnZVNjcm9sbGluZzoKKyAgICAgICAg
cmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmc7CisgICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNpbmdQYWdlc1Njcm9sbGluZzoK
KyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERkZhY2luZ1BhZ2VzU2Nyb2xs
aW5nOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQ6
CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudDsKKyAg
ICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51OgorICAg
ICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbk1lbnU7CisgICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uRGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0Owor
ICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxlZnRUb1Jp
Z2h0OgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkxl
ZnRUb1JpZ2h0OworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVj
dGlvblJpZ2h0VG9MZWZ0OgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvblJpZ2h0VG9MZWZ0OworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnT3Blbk1lZGlhSW5OZXdXaW5kb3c6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0
ZW1UYWdPcGVuTWVkaWFJbk5ld1dpbmRvdzsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0NsaXBib2FyZDoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ0NvcHlNZWRpYUxpbmtUb0NsaXBib2FyZDsKKyAgICBjYXNlIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHM6CisgICAgICAgIHJldHVybiBr
V0tDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzOworICAgIGNhc2UgV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29wOgorICAgICAgICByZXR1cm4ga1dL
Q29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29wOworICAgIGNhc2UgV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW46CisgICAgICAgIHJldHVybiBrV0tD
b250ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbjsKKyAgICBjYXNlIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheVBhdXNlOgorICAgICAgICByZXR1cm4ga1dLQ29u
dGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5UGF1c2U7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1UYWdNZWRpYU11dGU6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1U
YWdNZWRpYU11dGU7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseToKKyAgICAgICAgcmV0dXJu
IGtXS0NvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHk7CisgICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25zTWVudToKKyAgICAg
ICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1N1YnN0aXR1dGlvbnNNZW51OworICAgIGNh
c2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlvbnM6CisgICAgICAg
IHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9uczsKKyAgICBjYXNl
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlOgorICAgICAgICByZXR1
cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnU21hcnRDb3B5UGFzdGU7CisgICAgY2FzZSBXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlczoKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ1NtYXJ0UXVvdGVzOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJ
dGVtVGFnU21hcnREYXNoZXM6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdT
bWFydERhc2hlczsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlu
a3M6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UYWdTbWFydExpbmtzOworICAg
IGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50OgorICAgICAg
ICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50OworICAgIGNhc2Ug
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVHJhbnNmb3JtYXRpb25zTWVudToKKyAgICAgICAg
cmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnU7CisgICAgY2Fz
ZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdNYWtlVXBwZXJDYXNlOgorICAgICAgICByZXR1
cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZTsKKyAgICBjYXNlIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2U6CisgICAgICAgIHJldHVybiBrV0tDb250
ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOworICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtVGFnQ2FwaXRhbGl6ZToKKyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVRh
Z0NhcGl0YWxpemU7CisgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VC
YWNrOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjazsKKyNl
bmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChhY3Rpb24gPCBXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcpCisgICAgICAgICAgICBMT0dfRVJST1IoIkNvbnRl
eHRNZW51QWN0aW9uICVpIGlzIGFuIHVua25vd24gdGFnIGJ1dCBpcyBiZWxvdyB0aGUgYWxsb3dh
YmxlIGN1c3RvbSB0YWcgdmFsdWUgb2YgJWkiLCBhY3Rpb24sIFdlYkNvcmU6OiAgQ29udGV4dE1l
bnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdL
Q29udGV4dE1lbnVJdGVtVGFnPihhY3Rpb24pOworICAgIH0KK30KKworaW5saW5lIFdlYkNvcmU6
OkNvbnRleHRNZW51QWN0aW9uIHRvSW1wbChXS0NvbnRleHRNZW51SXRlbVRhZyB0YWcpCit7Cisg
ICAgc3dpdGNoICh0YWcpIHsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9u
OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb247Cisg
ICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0luTmV3V2luZG93OgorICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdzsK
KyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzazoKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzazsK
KyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQ6CisgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJk
OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3c6Cisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dp
bmRvdzsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2s6
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdl
VG9EaXNrOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9h
cmQ6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VU
b0NsaXBib2FyZDsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3
V2luZG93OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3BlbkZy
YW1lSW5OZXdXaW5kb3c7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdDb3B5OgorICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ29weTsKKyAgICBjYXNlIGtX
S0NvbnRleHRNZW51SXRlbVRhZ0dvQmFjazoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRl
eHRNZW51SXRlbVRhZ0dvQmFjazsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0dvRm9y
d2FyZDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2Fy
ZDsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1N0b3A6CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdG9wOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJ
dGVtVGFnUmVsb2FkOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
UmVsb2FkOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnQ3V0OgorICAgICAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ3V0OworICAgIGNhc2Uga1dLQ29udGV4dE1l
bnVJdGVtVGFnUGFzdGU6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1U
YWdQYXN0ZTsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3M6Cisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ0d1ZXNzOwor
ICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQ6CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZDsKKyAgICBjYXNl
IGtXS0NvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nOgorICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmc7CisgICAgY2FzZSBrV0tDb250
ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZzsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRl
bVRhZ090aGVyOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnT3Ro
ZXI7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hJblNwb3RsaWdodDoKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0
OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViOgorICAgICAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViOworICAgIGNhc2Uga1dLQ29u
dGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5OgorICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6Q29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5OworICAgIGNhc2Uga1dLQ29u
dGV4dE1lbnVJdGVtVGFnT3BlbldpdGhEZWZhdWx0QXBwbGljYXRpb246CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdPcGVuV2l0aERlZmF1bHRBcHBsaWNhdGlvbjsK
KyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERkFjdHVhbFNpemU6CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1QREZBY3R1YWxTaXplOworICAgIGNhc2Uga1dL
Q29udGV4dE1lbnVJdGVtVGFnUERGWm9vbUluOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtUERGWm9vbUluOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnUERG
Wm9vbU91dDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERlpvb21P
dXQ7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZBdXRvU2l6ZToKKyAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkF1dG9TaXplOworICAgIGNhc2Uga1dL
Q29udGV4dE1lbnVJdGVtVGFnUERGU2luZ2xlUGFnZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVBERlNpbmdsZVBhZ2U7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0
ZW1UYWdQREZGYWNpbmdQYWdlczoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVBERkZhY2luZ1BhZ2VzOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGQ29u
dGludW91czoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERkNvbnRp
bnVvdXM7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdQREZOZXh0UGFnZToKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVBERk5leHRQYWdlOworICAgIGNhc2Ug
a1dLQ29udGV4dE1lbnVJdGVtVGFnUERGUHJldmlvdXNQYWdlOgorICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtUERGUHJldmlvdXNQYWdlOworICAgIGNhc2Uga1dLQ29udGV4
dE1lbnVJdGVtVGFnT3Blbkxpbms6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVu
dUl0ZW1UYWdPcGVuTGluazsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdy
YW1tYXI6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVH
cmFtbWFyOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51OgorICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51OworICAg
IGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWw6CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbDsKKyAgICBj
YXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmc6CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nOworICAgIGNhc2Uga1dLQ29u
dGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nOgorICAgICAgICByZXR1cm4g
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nOworICAg
IGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nOgorICAg
ICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNw
ZWxsaW5nOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnU6CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdGb250TWVudTsKKyAgICBjYXNlIGtX
S0NvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250czoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbVRhZ1Nob3dGb250czsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRh
Z0JvbGQ6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdCb2xkOwor
ICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnSXRhbGljOgorICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSXRhbGljOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJ
dGVtVGFnVW5kZXJsaW5lOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVt
VGFnVW5kZXJsaW5lOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnT3V0bGluZToKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ091dGxpbmU7CisgICAgY2Fz
ZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdTdHlsZXM6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW1UYWdTdHlsZXM7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdT
aG93Q29sb3JzOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hv
d0NvbG9yczsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1NwZWVjaE1lbnU6CisgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51OworICAgIGNh
c2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZzoKKyAgICAgICAgcmV0dXJuIFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0U3BlYWtpbmc7CisgICAgY2FzZSBrV0tDb250
ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmc6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmc7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1U
YWdXcml0aW5nRGlyZWN0aW9uTWVudToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJ
dGVtVGFnRGVmYXVsdERpcmVjdGlvbjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb247CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1U
YWdMZWZ0VG9SaWdodDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z0xlZnRUb1JpZ2h0OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQ6
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDsK
KyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1BERlNpbmdsZVBhZ2VTY3JvbGxpbmc6Cisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZTaW5nbGVQYWdlU2Ny
b2xsaW5nOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnUERGRmFjaW5nUGFnZXNTY3Jv
bGxpbmc6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdQREZGYWNp
bmdQYWdlc1Njcm9sbGluZzsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RF
bGVtZW50OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSW5zcGVj
dEVsZW1lbnQ7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVu
dToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rp
b25NZW51OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvbkRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0
aW9uRGVmYXVsdDsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25M
ZWZ0VG9SaWdodDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1Rl
eHREaXJlY3Rpb25MZWZ0VG9SaWdodDsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1Rl
eHREaXJlY3Rpb25SaWdodFRvTGVmdDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbVRhZ1RleHREaXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICBjYXNlIGtXS0NvbnRleHRN
ZW51SXRlbVRhZ09wZW5NZWRpYUluTmV3V2luZG93OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnT3Blbk1lZGlhSW5OZXdXaW5kb3c7CisgICAgY2FzZSBrV0tDb250
ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ6CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3B5TWVkaWFMaW5rVG9DbGlwYm9hcmQ7CisgICAg
Y2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRyb2xzOgorICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250cm9sczsKKyAg
ICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcDoKKyAgICAgICAgcmV0
dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcDsKKyAgICBjYXNl
IGtXS0NvbnRleHRNZW51SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuOgorICAgICAgICByZXR1
cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW47CisgICAg
Y2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXlQYXVzZToKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheVBhdXNlOworICAgIGNhc2Uga1dL
Q29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29u
dGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBjYXNlIGtX
S0NvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHk6CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0
aWNhbGx5OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnU6
CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTdWJzdGl0dXRpb25z
TWVudTsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zOgor
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU2hvd1N1YnN0aXR1dGlv
bnM7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZToKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlOworICAg
IGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnU21hcnRRdW90ZXM6CisgICAgICAgIHJldHVybiBX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlczsKKyAgICBjYXNlIGtXS0NvbnRl
eHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnU21hcnREYXNoZXM7CisgICAgY2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdT
bWFydExpbmtzOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU21h
cnRMaW5rczsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudDoK
KyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVu
dDsKKyAgICBjYXNlIGtXS0NvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnU6Cisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdUcmFuc2Zvcm1hdGlvbnNN
ZW51OworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZToKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ01ha2VVcHBlckNhc2U7CisgICAg
Y2FzZSBrV0tDb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlOgorICAgICAgICByZXR1cm4g
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTWFrZUxvd2VyQ2FzZTsKKyAgICBjYXNlIGtXS0Nv
bnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemU6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpDb250
ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplOworICAgIGNhc2Uga1dLQ29udGV4dE1lbnVJdGVtVGFn
Q2hhbmdlQmFjazoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0No
YW5nZUJhY2s7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAodGFnIDwga1dLQ29u
dGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKQorICAgICAgICAgICAgTE9HX0VSUk9SKCJX
S0NvbnRleHRNZW51SXRlbVRhZyAlaSBpcyBhbiB1bmtub3duIHRhZyBidXQgaXMgYmVsb3cgdGhl
IGFsbG93YWJsZSBjdXN0b20gdGFnIHZhbHVlIG9mICVpIiwgdGFnLCBrV0tDb250ZXh0TWVudUl0
ZW1CYXNlQXBwbGljYXRpb25UYWcpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6Q29udGV4dE1lbnVBY3Rpb24+KHRhZyk7CisgICAgfQorfQorCitpbmxpbmUgV0tDb250ZXh0
TWVudUl0ZW1UeXBlIHRvQVBJKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVR5cGUgdHlwZSkKK3sK
KyAgICBzd2l0Y2godHlwZSkgeworICAgIGNhc2UgV2ViQ29yZTo6QWN0aW9uVHlwZToKKyAgICAg
ICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVR5cGVBY3Rpb247CisgICAgY2FzZSBXZWJDb3Jl
OjpDaGVja2FibGVBY3Rpb25UeXBlOgorICAgICAgICByZXR1cm4ga1dLQ29udGV4dE1lbnVJdGVt
VHlwZUNoZWNrYWJsZUFjdGlvbjsKKyAgICBjYXNlIFdlYkNvcmU6OlNlcGFyYXRvclR5cGU6Cisg
ICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1UeXBlU2VwYXJhdG9yOworICAgIGNhc2Ug
V2ViQ29yZTo6U3VibWVudVR5cGU6CisgICAgICAgIHJldHVybiBrV0tDb250ZXh0TWVudUl0ZW1U
eXBlU3VibWVudTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIGtXS0NvbnRleHRNZW51SXRlbVR5cGVBY3Rpb247CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdLU2hhcmVkQVBJQ2FzdF9oCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGll
bnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIldlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51SXRlbS5o
IgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6Omdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRNZW51VmVjdG9yLCBWZWN0b3I8
V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIGN1c3RvbU1lbnUsIEFQSU9iamVjdCogdXNlckRhdGEp
Cit7CisgICAgaWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgdW5zaWduZWQgc2l6ZSA9IHByb3Bv
c2VkTWVudVZlY3Rvci5zaXplKCk7CisgICAgUmVmUHRyPE11dGFibGVBcnJheT4gcHJvcG9zZWRN
ZW51ID0gTXV0YWJsZUFycmF5OjpjcmVhdGUoKTsKKyAgICBwcm9wb3NlZE1lbnUtPnJlc2VydmVD
YXBhY2l0eShzaXplKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQor
ICAgICAgICBwcm9wb3NlZE1lbnUtPmFwcGVuZChXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShw
cm9wb3NlZE1lbnVWZWN0b3JbaV0pLmdldCgpKTsKKyAgICAgICAgCisgICAgV0tBcnJheVJlZiBu
ZXdNZW51ID0gMDsKKyAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUo
dG9BUEkocGFnZSksIHRvQVBJKHByb3Bvc2VkTWVudS5nZXQoKSksICZuZXdNZW51LCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIFJlZlB0cjxJbW11dGFibGVBcnJh
eT4gYXJyYXkgPSBhZG9wdFJlZih0b0ltcGwobmV3TWVudSkpOworICAgIAorICAgIGN1c3RvbU1l
bnUuY2xlYXIoKTsKKyAgICAKKyAgICBzaXplX3QgbmV3U2l6ZSA9IGFycmF5ID8gYXJyYXktPnNp
emUoKSA6IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdTaXplOyArK2kpIHsKKyAg
ICAgICAgV2ViQ29udGV4dE1lbnVJdGVtKiBpdGVtID0gYXJyYXktPmF0PFdlYkNvbnRleHRNZW51
SXRlbT4oaSk7CisgICAgICAgIGlmICghaXRlbSkgeworICAgICAgICAgICAgTE9HKENvbnRleHRN
ZW51LCAiTmV3IG1lbnUgZW50cnkgYXQgaW5kZXggJWkgaXMgbm90IGEgV2ViQ29udGV4dE1lbnVJ
dGVtIiwgKGludClpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBjdXN0b21NZW51LmFwcGVuZCgqaXRlbS0+ZGF0YSgpKTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGFnZUNvbnRl
eHRNZW51Q2xpZW50X2gKKyNkZWZpbmUgV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50X2gKKworI2lu
Y2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLUGFnZS5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEFQSU9iamVjdDsKK2NsYXNz
IFdlYkNvbnRleHRNZW51SXRlbURhdGE7CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdl
YlBhZ2VDb250ZXh0TWVudUNsaWVudCA6IHB1YmxpYyBBUElDbGllbnQ8V0tQYWdlQ29udGV4dE1l
bnVDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICBib29sIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2Vk
TWVudShXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
IHByb3Bvc2VkTWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBjdXN0b21NZW51
LCBBUElPYmplY3QqIHVzZXJEYXRhKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50X2gKSW5kZXg6IFdlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkocmV2aXNpb24gNzIwMTIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDExIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojppbml0aWFsaXplRmluZENsaWVudCgKICAgICBtX2ZpbmRDbGllbnQuaW5pdGlh
bGl6ZShjbGllbnQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUNvbnRleHRN
ZW51Q2xpZW50KGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50KiBjbGllbnQpCit7CisgICAg
bV9jb250ZXh0TWVudUNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7Cit9CisKIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWxhdW5jaCgpCiB7CiAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKQEAgLTExNzEsMTQg
KzExNzYsMjggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUoKQogICAgIG1fYWN0
aXZlUG9wdXBNZW51ID0gMDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVu
dShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8V2Vi
Q29udGV4dE1lbnVJdGVtRGF0YT4mIGl0ZW1zKQordm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250
ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0
b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mIHByb3Bvc2VkSXRlbXMsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciogYXJndW1lbnRzKQogeworICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRh
OworICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRh
dGEsIHBhZ2VOYW1lc3BhY2UoKS0+Y29udGV4dCgpKTsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVj
b2RlKG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fYWN0aXZl
Q29udGV4dE1lbnUpCiAgICAgICAgIG1fYWN0aXZlQ29udGV4dE1lbnUtPmhpZGVDb250ZXh0TWVu
dSgpOwogICAgIGVsc2UKICAgICAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG1fcGFnZUNsaWVu
dC0+Y3JlYXRlQ29udGV4dE1lbnVQcm94eSh0aGlzKTsKLSAgICAgIAotICAgIG1fYWN0aXZlQ29u
dGV4dE1lbnUtPnNob3dDb250ZXh0TWVudShtZW51TG9jYXRpb24sIGl0ZW1zKTsKKworICAgIC8v
IEdpdmUgdGhlIFBhZ2VDb250ZXh0TWVudUNsaWVudCBvbmUgbGFzdCBzd2lwZSBhdCBjaGFuZ2lu
ZyB0aGUgbWVudS4KKyAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4gaXRlbXM7Cisg
ICAgICAgIAorICAgIGlmICghbV9jb250ZXh0TWVudUNsaWVudC5nZXRDb250ZXh0TWVudUZyb21Q
cm9wb3NlZE1lbnUodGhpcywgcHJvcG9zZWRJdGVtcywgaXRlbXMsIHVzZXJEYXRhLmdldCgpKSkg
eworICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5zaG93Q29udGV4dE1lbnUobWVudUxvY2F0
aW9uLCBwcm9wb3NlZEl0ZW1zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBp
ZiAoaXRlbXMuc2l6ZSgpKQorICAgICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5zaG93Q29udGV4
dE1lbnUobWVudUxvY2F0aW9uLCBpdGVtcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250
ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpJ
bmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDcyMDEyKQorKysgV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnku
aCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlQ29udGV4dE1lbnVDbGll
bnQuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmgiCiAjaW5jbHVkZSAiV2Vi
RXZlbnQuaCIKICNpbmNsdWRlICJXZWJGaW5kQ2xpZW50LmgiCkBAIC0xMTksMTEgKzEyMCwxMiBA
QCBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yUHJveHkqIGluc3BlY3RvcigpOwogCiAgICAgdm9p
ZCBzZXRQYWdlQ2xpZW50KFBhZ2VDbGllbnQqKTsKKyAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0
TWVudUNsaWVudChjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudCopOworICAgIHZvaWQgaW5p
dGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQYWdlRmluZENsaWVudCopOworICAgIHZvaWQgaW5p
dGlhbGl6ZUZvcm1DbGllbnQoY29uc3QgV0tQYWdlRm9ybUNsaWVudCopOwogICAgIHZvaWQgaW5p
dGlhbGl6ZUxvYWRlckNsaWVudChjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnQqKTsKICAgICB2b2lk
IGluaXRpYWxpemVQb2xpY3lDbGllbnQoY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50Kik7Ci0gICAg
dm9pZCBpbml0aWFsaXplRm9ybUNsaWVudChjb25zdCBXS1BhZ2VGb3JtQ2xpZW50Kik7CiAgICAg
dm9pZCBpbml0aWFsaXplVUlDbGllbnQoY29uc3QgV0tQYWdlVUlDbGllbnQqKTsKLSAgICB2b2lk
IGluaXRpYWxpemVGaW5kQ2xpZW50KGNvbnN0IFdLUGFnZUZpbmRDbGllbnQqKTsKICAgICB2b2lk
IHJlbGF1bmNoKCk7CiAKICAgICB2b2lkIGluaXRpYWxpemVXZWJQYWdlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKTsKQEAgLTM0MCw3ICszNDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGlkZVBv
cHVwTWVudSgpOwogCiAgICAgLy8gQ29udGV4dCBNZW51LgotICAgIHZvaWQgc2hvd0NvbnRleHRN
ZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+JiBpdGVtcyk7CisgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAogICAgIHZvaWQgdGFrZUZvY3VzKGJvb2wgZGlyZWN0
aW9uKTsKICAgICB2b2lkIHNldFRvb2xUaXAoY29uc3QgU3RyaW5nJik7CkBAIC0zNjYsNiArMzY4
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJGb3JtQ2xpZW50IG1fZm9ybUNsaWVudDsKICAgICBXZWJV
SUNsaWVudCBtX3VpQ2xpZW50OwogICAgIFdlYkZpbmRDbGllbnQgbV9maW5kQ2xpZW50OworICAg
IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudCBtX2NvbnRleHRNZW51Q2xpZW50OwogCiAgICAgT3du
UHRyPERyYXdpbmdBcmVhUHJveHk+IG1fZHJhd2luZ0FyZWE7CiAgICAgUmVmUHRyPFdlYlBhZ2VO
YW1lc3BhY2U+IG1fcGFnZU5hbWVzcGFjZTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDcyMDEyKQorKysgV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBIaWRlUG9wdXBNZW51KCkKICAg
ICAKICAgICAjIENvbnRleHRNZW51Ci0gICAgU2hvd0NvbnRleHRNZW51KFdlYkNvcmU6OkludFBv
aW50IHBvaW50LCBWZWN0b3I8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBpdGVtcykK
KyAgICBTaG93Q29udGV4dE1lbnUoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIFZlY3RvcjxXZWJL
aXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGE+IGl0ZW1zLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgICMgQWNjZWxlcmF0ZWQgY29tcHNpdGluZyBtZXNzYWdlcy4KSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gNzIwMTIpCisrKyBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMTggKzIzOCwx
OCBAQCB2b2lkIFdLUGFnZUNvdW50U3RyaW5nTWF0Y2hlcyhXS1BhZ2VSZWYgCiAgICAgdG9JbXBs
KHBhZ2VSZWYpLT5jb3VudFN0cmluZ01hdGNoZXModG9JbXBsKHN0cmluZyktPnN0cmluZygpLCBj
YXNlSW5zZW5zaXRpdmUsIG1heE1hdGNoQ291bnQpOwogfQogCi12b2lkIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudCog
d2tDbGllbnQpCit2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbGllbnQqIHdrQ2xpZW50KQogewogICAg
IGlmICh3a0NsaWVudCAmJiB3a0NsaWVudC0+dmVyc2lvbikKICAgICAgICAgcmV0dXJuOwotICAg
IHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUxvYWRlckNsaWVudCh3a0NsaWVudCk7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5pbml0aWFsaXplQ29udGV4dE1lbnVDbGllbnQod2tDbGllbnQpOwog
fQogCi12b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZVBvbGljeUNsaWVudCogd2tDbGllbnQpCit2b2lkIFdLUGFnZVNldFBhZ2VGaW5k
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VGaW5kQ2xpZW50KiB3a0NsaWVu
dCkKIHsKICAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHJl
dHVybjsKLSAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVQb2xpY3lDbGllbnQod2tDbGll
bnQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+aW5pdGlhbGl6ZUZpbmRDbGllbnQod2tDbGllbnQp
OwogfQogCiB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBj
b25zdCBXS1BhZ2VGb3JtQ2xpZW50KiB3a0NsaWVudCkKQEAgLTI1OSwxOCArMjU5LDI1IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVmIHAKICAgICB0b0ltcGwocGFnZVJl
ZiktPmluaXRpYWxpemVGb3JtQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50KiB3a0Ns
aWVudCkKK3ZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50KiB3a0NsaWVudCkKIHsKICAgICBpZiAod2tDbGllbnQg
JiYgd2tDbGllbnQtPnZlcnNpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB0b0ltcGwocGFnZVJl
ZiktPmluaXRpYWxpemVVSUNsaWVudCh3a0NsaWVudCk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5p
bml0aWFsaXplTG9hZGVyQ2xpZW50KHdrQ2xpZW50KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRQYWdl
RmluZENsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlRmluZENsaWVudCogd2tD
bGllbnQpCit2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYs
IGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudCogd2tDbGllbnQpCiB7CiAgICAgaWYgKHdrQ2xpZW50
ICYmIHdrQ2xpZW50LT52ZXJzaW9uKQogICAgICAgICByZXR1cm47Ci0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5pbml0aWFsaXplRmluZENsaWVudCh3a0NsaWVudCk7CisgICAgdG9JbXBsKHBhZ2VSZWYp
LT5pbml0aWFsaXplUG9saWN5Q2xpZW50KHdrQ2xpZW50KTsKK30KKwordm9pZCBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50KiB3a0Ns
aWVudCkKK3sKKyAgICBpZiAod2tDbGllbnQgJiYgd2tDbGllbnQtPnZlcnNpb24pCisgICAgICAg
IHJldHVybjsKKyAgICB0b0ltcGwocGFnZVJlZiktPmluaXRpYWxpemVVSUNsaWVudCh3a0NsaWVu
dCk7CiB9CiAKIHZvaWQgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBw
YWdlUmVmLCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZVJ1bkph
dmFTY3JpcHRGdW5jdGlvbiBjYWxsYmFjaykKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
CShyZXZpc2lvbiA3MjAxMikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDE2IEBAIGVudW0gewogICAgIGtXS01vcmVUaGFu
TWF4aW11bU1hdGNoQ291bnQgPSAtMQogfTsKIAorLy8gQ29udGV4dE1lbnUgY2xpZW50Cit0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VHZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZENvbnRleHRNZW51Q2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0FycmF5UmVmIHByb3Bvc2VkTWVudSwgV0tBcnJheVJl
ZiogbmV3TWVudSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
Kworc3RydWN0IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50IHsKKyAgICBpbnQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNp
b247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworICAgIFdLUGFnZUdldENvbnRleHRNZW51
RnJvbVByb3Bvc2VkQ29udGV4dE1lbnVDYWxsYmFjayAgICAgICAgICAgICAgICAgZ2V0Q29udGV4
dE1lbnVGcm9tUHJvcG9zZWRNZW51OworfTsKK3R5cGVkZWYgc3RydWN0IFdLUGFnZUNvbnRleHRN
ZW51Q2xpZW50IFdLUGFnZUNvbnRleHRNZW51Q2xpZW50OworCiBXS19FWFBPUlQgV0tUeXBlSUQg
V0tQYWdlR2V0VHlwZUlEKCk7CiAKIFdLX0VYUE9SVCBXS1BhZ2VOYW1lc3BhY2VSZWYgV0tQYWdl
R2V0UGFnZU5hbWVzcGFjZShXS1BhZ2VSZWYgcGFnZSk7CkBAIC0yNzUsMTEgKzI4NSwxMiBAQCBX
S19FWFBPUlQgdm9pZCBXS1BhZ2VGaW5kU3RyaW5nKFdLUGFnZVJlCiBXS19FWFBPUlQgdm9pZCBX
S1BhZ2VIaWRlRmluZFVJKFdLUGFnZVJlZiBwYWdlKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUNv
dW50U3RyaW5nTWF0Y2hlcyhXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc3RyaW5nLCBib29s
IGNhc2VJbnNlbnNpdGl2ZSwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAKK1dLX0VYUE9SVCB2
b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qg
V0tQYWdlQ29udGV4dE1lbnVDbGllbnQqIGNsaWVudCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VT
ZXRQYWdlRmluZENsaWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlRmluZENsaWVudCog
Y2xpZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZVNldFBhZ2VGb3JtQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlLCBjb25zdCBXS1BhZ2VGb3JtQ2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQg
V0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlTG9h
ZGVyQ2xpZW50KiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNs
aWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50KiBjbGllbnQpOwot
V0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNv
bnN0IFdLUGFnZUZvcm1DbGllbnQqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IFdLUGFnZVVJQ2xpZW50KiBjbGllbnQp
OwotV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IFdLUGFnZUZpbmRDbGllbnQqIGNsaWVudCk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFn
ZVJ1bkphdmFTY3JpcHRGdW5jdGlvbikoV0tTdHJpbmdSZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsK
IFdLX0VYUE9SVCB2b2lkIFdLUGFnZVJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXS1BhZ2VSZWYg
cGFnZSwgV0tTdHJpbmdSZWYgc2NyaXB0LCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VSdW5KYXZhU2Ny
aXB0RnVuY3Rpb24gZnVuY3Rpb24pOwpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDcyMDEyKQorKysgV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NCwxNCArMTk0LDIwIEBA
CiAJCTFDQThCOTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMkRBRDEyNzhDNUIy
MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWFjLm1tICovOyB9OwogCQk1MTBGQkI5QTEyODhDOTVF
MDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBGQkI5ODEyODhDOTVFMDBBRkZERjQgLyog
V2ViQ29udGV4dE1lbnVJdGVtRGF0YS5jcHAgKi87IH07CiAJCTUxMEZCQjlCMTI4OEM5NUUwMEFG
RkRGNCAvKiBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YS5oICovOyB9OworCQk1MTExQ0IwMjEyOEUyMjNCMDAyMjAzRjcgLyog
dW50aXRsZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMTFDQjAxMTI4RTIyM0IwMDIyMDNGNyAvKiB1bnRpdGxlZC5oICovOyB9OwogCQk1MTI5MzVE
NzEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjkzNUQ1MTI4OEQxOTQwMEE0QjY5
NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uY3BwICovOyB9OwogCQk1MTI5MzVEODEyODhEMTk0MDBB
NEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVENjEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4
dE1lbnVJdGVtLmggKi87IH07CiAJCTUxMjkzNUUzMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVFMTEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwICovOyB9OwogCQk1MTI5MzVFNDEyODhE
OTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjkzNUUyMTI4OEQ5
NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovOyB9
OworCQk1MTUzNTY5QzEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTM1
NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwICovOyB9
OworCQk1MTUzNTY5RDEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTUzNTY5
QjEyOTFCMUQyMDAwNzQ5REMgLyogV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJ
CTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTU3OEI4MjEyMDlFQ0VGMDBBMzdDNEEgLyog
V2ViRGF0YS5oICovOyB9OwogCQk1MTZBNEE1RDEyMEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkE0QTVC
MTIwQTJDQ0QwMEMwNUI3RiAvKiBXZWJFcnJvci5oICovOyB9OwogCQk1MTg3MUI1QjEyN0NCODlE
MDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRl
eHRNZW51LmNwcCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRl
eHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLzsgfTsKKwkJNTFB
NTU1RjUxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTU1NUYzMTI4QzZDNDcwMDlB
QkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5jcHAgKi87IH07CisJCTUxQTU1NUY2MTI4QzZDNDcw
MDlBQkNFQyAvKiBXS0NvbnRleHRNZW51SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNTU1RjQxMjhDNkM0NzAwOUFCQ0VDIC8qIFdLQ29udGV4
dE1lbnVJdGVtLmggKi87IH07CisJCTUxQTU1NjAxMTI4QzZEOTIwMDlBQkNFQyAvKiBXS0NvbnRl
eHRNZW51SXRlbVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUE1NTYwMDEyOEM2RDkyMDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW1UeXBl
cy5oICovOyB9OwogCQk1MUE3RjJGMzEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBN0YyRjIxMjVCRjgy
MDAwOEFFQjFEIC8qIExvZ2dpbmcuaCAqLzsgfTsKIAkJNTFBN0YyRjUxMjVCRjhENDAwOEFFQjFE
IC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBN0YyRjQxMjVCRjhENDAwOEFFQjFEIC8qIExvZ2dpbmcuY3BwICovOyB9OwogCQk1
MUE4NENFMzEyN0YzODZCMDBDQTZFQTQgLyogV2ViQ29udGV4dE1lbnVQcm94eS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE4NENFMjEyN0YzODZC
MDBDQTZFQTQgLyogV2ViQ29udGV4dE1lbnVQcm94eS5jcHAgKi87IH07CkBAIC03NTQsMTQgKzc2
MCwyMCBAQAogCQkzMkRCQ0Y1RTAzNzBBREVFMDBDOTE3ODMgLyogV2ViS2l0MlByZWZpeC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXQyUHJlZml4Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEZCQjk4MTI4OEM5NUUwMEFGRkRGNCAvKiBXZWJDb250
ZXh0TWVudUl0ZW1EYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkNvbnRleHRNZW51SXRlbURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTBGQkI5OTEyODhDOTVFMDBBRkZERjQgLyogV2ViQ29udGV4dE1lbnVJdGVtRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudUl0ZW1EYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMTFDQjAxMTI4RTIyM0IwMDIyMDNGNyAv
KiB1bnRpdGxlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB1bnRpdGxlZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTI5MzVENTEyODhEMTk0MDBBNEI2OTUg
LyogV2ViQ29udGV4dE1lbnVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkNvbnRleHRNZW51SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnVJdGVtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjkzNUUxMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjkzNUUyMTI4OEQ5NzgwMEE0QjY5NSAv
KiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTUzNTY5QTEyOTFCMUQyMDAwNzQ5REMgLyog
V2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUNvbnRl
eHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNTc4QjgyMTIw
OUVDRUYwMEEzN0M0QSAvKiBXZWJEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2QTRBNUIxMjBB
MkNDRDAwQzA1QjdGIC8qIFdlYkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODcxQjU5MTI3
Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0TWVudS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUE1NTVGMzEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250
ZXh0TWVudUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tD
b250ZXh0TWVudUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUE1NTVG
NDEyOEM2QzQ3MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0TWVudUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFBNTU2MDAxMjhDNkQ5MjAwOUFCQ0VDIC8qIFdLQ29udGV4dE1lbnVJdGVt
VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0TWVudUl0
ZW1UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE3RjJGMjEyNUJGODIw
MDA4QUVCMUQgLyogTG9nZ2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
b2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTdGMkY0MTI1QkY4RDQw
MDhBRUIxRCAvKiBMb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IExvZ2dpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUE4NENFMjEy
N0YzODZCMDBDQTZFQTQgLyogV2ViQ29udGV4dE1lbnVQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb250ZXh0TWVudVByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNDksNiArMTE2MSw3IEBACiAJCTA4NjdENjkxRkU4NDAy
OEZDMDJBQUMwNyAvKiBXZWJLaXQyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQk1MTExQ0IwMTEyOEUyMjNCMDAyMjAzRjcgLyogdW50aXRsZWQuaCAqLywK
IAkJCQlDMENFNzJEQjEyNDdFOEY3MDBCQzBFQzQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywK
IAkJCQlCQzJFNkU3NDExNDE5NkYwMDBBNjNCMUUgLyogUGxhdGZvcm0gKi8sCiAJCQkJMUEwRUM2
QjAxMjRCQkQzNjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3MgKi8sCkBAIC0xNjc2LDYgKzE2ODks
OCBAQAogCQkJCUJDNTk1MzQwMTBGQzA0NTIwMDk4RjgyRCAvKiBXZWJMb2FkZXJDbGllbnQuaCAq
LywKIAkJCQlCQ0Y2OUZBMTExNzZEMDE0MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGEuY3Bw
ICovLAogCQkJCUJDRjY5RkEwMTE3NkQwMTQwMDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YS5o
ICovLAorCQkJCTUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVD
bGllbnQuY3BwICovLAorCQkJCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29u
dGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCQlCQ0VFOThDNDExMzMxNEQ3MDA2QkNDMjQgLyogV2Vi
UGFnZU5hbWVzcGFjZS5jcHAgKi8sCiAJCQkJQkNFRTk4QzUxMTMzMTRENzAwNkJDQzI0IC8qIFdl
YlBhZ2VOYW1lc3BhY2UuaCAqLywKIAkJCQlCQzExMUIwQjExMkY1RTRGMDAzMzdCQUIgLyogV2Vi
UGFnZVByb3h5LmNwcCAqLywKQEAgLTIwNDIsNiArMjA1Nyw5IEBACiAJCQkJQkNEREIzMTYxMjRF
QkQxMzAwNDhEMTNDIC8qIFdLQmFzZS5oICovLAogCQkJCUJDNDA3NUQ5MTI0RkYwMjcwMDY4RjIw
QSAvKiBXS0NlcnRpZmljYXRlSW5mby5jcHAgKi8sCiAJCQkJQkM0MDc1REExMjRGRjAyNzAwNjhG
MjBBIC8qIFdLQ2VydGlmaWNhdGVJbmZvLmggKi8sCisJCQkJNTFBNTU1RjMxMjhDNkM0NzAwOUFC
Q0VDIC8qIFdLQ29udGV4dE1lbnVJdGVtLmNwcCAqLywKKwkJCQk1MUE1NTVGNDEyOEM2QzQ3MDA5
QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW0uaCAqLywKKwkJCQk1MUE1NTYwMDEyOEM2RDkyMDA5
QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oICovLAogCQkJCUJDNDA3NURCMTI0RkYw
MjcwMDY4RjIwQSAvKiBXS0RhdGEuY3BwICovLAogCQkJCUJDNDA3NURDMTI0RkYwMjcwMDY4RjIw
QSAvKiBXS0RhdGEuaCAqLywKIAkJCQlCQzQwNzVERDEyNEZGMDI3MDA2OEYyMEEgLyogV0tEaWN0
aW9uYXJ5LmNwcCAqLywKQEAgLTI0MDIsOSArMjQyMCwxMyBAQAogCQkJCTUxMjkzNUU0MTI4OEQ5
NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCN0Q3MkMxMjg4Q0FBRDAwQ0ZEMDhDIC8qIFdlYkRvd25sb2FkQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tE
b3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFBNTU1RjYxMjhDNkM0NzAwOUFCQ0VDIC8q
IFdLQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUE1NTYwMTEyOEM2RDky
MDA5QUJDRUMgLyogV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFRTdEQzUxMjhCNjQ1RDAwOTgyN0RBIC8qIEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFRDgyQTdGMjEyOEM2RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdlT3Zl
cmxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdl
Ykluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMTFDQjAyMTI4
RTIyM0IwMDIyMDNGNyAvKiB1bnRpdGxlZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE1MzU2OUQx
MjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yNzU3LDExICsyNzc5LDEzIEBACiAJCQkJNTEyOTM1RTMxMjg4RDk3ODAwQTRCNjk1
IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBQjdENzJEMTI4OENBQUQwMENGRDA4QyAvKiBXZWJEb3dubG9hZENsaWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUI3RDc4RTEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9h
ZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUE1NTVGNTEyOEM2QzQ3MDA5QUJDRUMgLyogV0tD
b250ZXh0TWVudUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRTdEQzYxMjhCNjQ1RDAw
OTgyN0RBIC8qIEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFD
QThCOTM2MTI3Qzc3NEUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTFDQThCOTQ1MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4Qjk1NDEyN0M4OTE1
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRURDQTcx
QjcxMjhEREE4QzAwMjAxQjI2IC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTE1MzU2OUMxMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNs
aWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUNvbnRleHRNZW51Q2xpZW50LmNwcAkocmV2aXNpb24gNzIwMTIpCisrKyBXZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwyNCArMzgsMjEgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIEluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJQYWdlKiBw
YWdlLCBXZWJDb3JlOjpDb250ZXh0TWVudSogZGVmYXVsdE1lbnUsIFZlY3RvcjxXZWJDb250ZXh0
TWVudUl0ZW1EYXRhPiYgbmV3TWVudSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqIHBhZ2UsIElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgY29uc3QgVmVjdG9yPFdl
YkNvbnRleHRNZW51SXRlbURhdGE+JiBkZWZhdWx0TWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+JiBuZXdNZW51LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAg
aWYgKCFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21EZWZhdWx0TWVudSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gaGl0
VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGRlZmF1bHRN
ZW51LT5oaXRUZXN0UmVzdWx0KCkpOwotICAgIAotICAgIFZlY3RvcjxXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW0+IGNvcmVJdGVtcyA9IFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVZlY3RvcihkZWZh
dWx0TWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKLSAgICBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4gd2ViSXRlbXMgPSBraXRJdGVtcyhjb3JlSXRlbXMsIGRlZmF1bHRNZW51KTsK
LQogICAgIFJlZlB0cjxNdXRhYmxlQXJyYXk+IGRlZmF1bHRNZW51QXJyYXkgPSBNdXRhYmxlQXJy
YXk6OmNyZWF0ZSgpOwotICAgIGRlZmF1bHRNZW51QXJyYXktPnJlc2VydmVDYXBhY2l0eSh3ZWJJ
dGVtcy5zaXplKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJJdGVtcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgZGVmYXVsdE1lbnVBcnJheS0+YXBwZW5kKFdlYkNvbnRleHRNZW51
SXRlbTo6Y3JlYXRlKHdlYkl0ZW1zW2ldKS5nZXQoKSk7CisgICAgZGVmYXVsdE1lbnVBcnJheS0+
cmVzZXJ2ZUNhcGFjaXR5KGRlZmF1bHRNZW51LnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGRlZmF1bHRNZW51LnNpemUoKTsgKytpKQorICAgICAgICBkZWZhdWx0TWVudUFy
cmF5LT5hcHBlbmQoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoZGVmYXVsdE1lbnVbaV0pLmdl
dCgpKTsKIAogICAgIFdLQXJyYXlSZWYgbmV3TWVudVdLID0gMDsKLSAgICBtX2NsaWVudC5nZXRD
b250ZXh0TWVudUZyb21EZWZhdWx0TWVudSh0b0FQSShwYWdlKSwgdG9BUEkoaGl0VGVzdFJlc3Vs
dC5nZXQoKSksIHRvQVBJKGRlZmF1bHRNZW51QXJyYXkuZ2V0KCkpLCAmbmV3TWVudVdLLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKKyAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAg
IG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbURlZmF1bHRNZW51KHRvQVBJKHBhZ2UpLCB0b0FQ
SShoaXRUZXN0UmVzdWx0KSwgdG9BUEkoZGVmYXVsdE1lbnVBcnJheS5nZXQoKSksICZuZXdNZW51
V0ssICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xpZW50SW5mbyk7CiAgICAgUmVmUHRyPElt
bXV0YWJsZUFycmF5PiBhcnJheSA9IGFkb3B0UmVmKHRvSW1wbChuZXdNZW51V0spKTsKKyAgICB1
c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogICAgIAogICAgIG5l
d01lbnUuY2xlYXIoKTsKICAgICAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudC5oCShyZXZpc2lvbiA3MjAxMikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiwxMiArMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgQVBJT2JqZWN0OworY2xhc3MgSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0OwogY2xhc3MgV2ViQ29udGV4dE1lbnVJdGVtRGF0YTsKIGNsYXNzIFdlYlBh
Z2U7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50IDogcHVibGlj
IEFQSUNsaWVudDxXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudD4gewogcHVibGljOgotICAg
IGJvb2wgZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoV2ViUGFnZSosIFdlYkNvcmU6OkNv
bnRleHRNZW51KiBkZWZhdWx0TWVudSwgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBu
ZXdNZW51KTsKKyAgICBib29sIGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2Uq
LCBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQqLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1l
bnVJdGVtRGF0YT4mIGRlZmF1bHRNZW51LCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4m
IG5ld01lbnUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJKHJldmlzaW9uIDcyMDEyKQorKysgV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUZvcm1DbGllbnQg
ewogdHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlRm9ybUNsaWVudCBXS0J1bmRsZVBhZ2VGb3Jt
Q2xpZW50OwogCiAvLyBDb250ZXh0TWVudSBjbGllbnQKLXR5cGVkZWYgdm9pZCAoKldLQnVuZGxl
UGFnZUdldENvbnRleHRNZW51RnJvbURlZmF1bHRDb250ZXh0TWVudUNhbGxiYWNrKShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHQsIFdL
QXJyYXlSZWYgZGVmYXVsdE1lbnUsIFdLQXJyYXlSZWYqIG5ld01lbnUsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlR2V0Q29udGV4dE1lbnVGcm9t
RGVmYXVsdENvbnRleHRNZW51Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZUhpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJlc3VsdCwgV0tBcnJheVJlZiBkZWZhdWx0TWVudSwg
V0tBcnJheVJlZiogbmV3TWVudSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CiAKIHN0cnVjdCBXS0J1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudCB7CiAgICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ZXJzaW9uOwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCShyZXZpc2lvbiA3
MjAxMikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEyICs0Myw4IEBAIHZvaWQgV2ViQ29u
dGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51RGUKIAogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24g
V2ViQ29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKENvbnRl
eHRNZW51KiBtZW51KQogewotICAgIFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiBuZXdN
ZW51OwotICAgIGlmICghbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51Q2xpZW50KCku
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMobV9wYWdlLCBtZW51LCBuZXdNZW51KSkKLSAg
ICAgICAgcmV0dXJuIG1lbnUtPnBsYXRmb3JtRGVzY3JpcHRpb24oKTsKLSAgICAKLSAgICBWZWN0
b3I8Q29udGV4dE1lbnVJdGVtPiBjb3JlSXRlbVZlY3RvciA9IGNvcmVJdGVtcyhuZXdNZW51KTsK
LSAgICByZXR1cm4gcGxhdGZvcm1NZW51RGVzY3JpcHRpb24oY29yZUl0ZW1WZWN0b3IpOworICAg
IC8vIFdlYktpdDIgaWdub3JlcyB0aGlzIGNsaWVudCBjYWxsYmFjayBhbmQgZG9lcyBjb250ZXh0
IG1lbnUgY3VzdG9taXphdGlvbiB3aGVuIGl0IGlzIHRvbGQgdG8gc2hvdyB0aGUgbWVudS4KKyAg
ICByZXR1cm4gbWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpOwogfQogCiB2b2lkIFdlYkNvbnRl
eHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBj
b25zdCBDb250ZXh0TWVudSopCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b250ZXh0TWVudS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29udGV4dE1lbnUuY3BwCShyZXZpc2lvbiA3MjAxMikKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEs
NyBAQAogCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIKIAorI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKQEAgLTU4LDEwICs1OSwxNiBAQCB2b2lkIFdlYkNvbnRleHRNZW51OjpzaG93KCkKICAg
ICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFBvaW50IHBvaW50ID0gdmll
dy0+Y29udGVudHNUb1dpbmRvdyhtZW51LT5oaXRUZXN0UmVzdWx0KCkucG9pbnQoKSk7Ci0gICAg
VmVjdG9yPENvbnRleHRNZW51SXRlbT4gaXRlbXMgPSBjb250ZXh0TWVudUl0ZW1WZWN0b3IobWVu
dS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKKyAgICAvLyBHaXZlIHRoZSBidW5kbGUgY2xpZW50
IGEgY2hhbmNlIHRvIHByb2Nlc3MgdGhlIG1lbnUuCisgICAgVmVjdG9yPENvbnRleHRNZW51SXRl
bT4gY29yZUl0ZW1zID0gY29udGV4dE1lbnVJdGVtVmVjdG9yKG1lbnUtPnBsYXRmb3JtRGVzY3Jp
cHRpb24oKSk7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+IHByb3Bvc2VkTWVu
dSA9IGtpdEl0ZW1zKGNvcmVJdGVtcywgbWVudSk7CisgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51
SXRlbURhdGE+IG5ld01lbnU7CisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAg
aWYgKG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudCgpLmdldEN1c3RvbU1l
bnVGcm9tRGVmYXVsdEl0ZW1zKG1fcGFnZSwgMCwgcHJvcG9zZWRNZW51LCBuZXdNZW51LCB1c2Vy
RGF0YSkpCisgICAgICAgIHByb3Bvc2VkTWVudSA9IG5ld01lbnU7CiAKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51KHBvaW50LCBraXRJdGVt
cyhpdGVtcywgbWVudSkpKTsKKyAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbnRleHRNZW51KHZpZXctPmNv
bnRlbnRzVG9XaW5kb3cobWVudS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50KCkpLCBwcm9wb3NlZE1l
bnUsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwog
fQogCiB2b2lkIFdlYkNvbnRleHRNZW51OjppdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1l
bnVJdGVtRGF0YSYgaXRlbSkKSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA3MjAxMikKKysr
IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NjgsNiArNjY4
LDE4IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxTaGFyZWRcQVBJXGNcV0tDb250ZXh0TWVudUl0ZW0uY3BwIg0KKwkJCQkJPg0KKwkJ
CQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElc
Y1xXS0NvbnRleHRNZW51SXRlbS5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxl
DQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxBUElcY1xXS0NvbnRleHRNZW51SXRlbVR5
cGVzLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cU2hhcmVkXEFQSVxjXHdpblxXS0NlcnRpZmljYXRlSW5mb1dpbi5jcHAiDQogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCkBAIC0xODY1LDYgKzE4NzcsMTQgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXFdlYlBhZ2VD
b250ZXh0TWVudUNsaWVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50Lmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxV
SVByb2Nlc3NcV2ViUGFnZU5hbWVzcGFjZS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQo=
</data>
<flag name="review"
          id="64434"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="64435"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>