<?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>126144</bug_id>
          
          <creation_ts>2013-12-22 18:31:10 -0800</creation_ts>
          <short_desc>[WK2] Replace usage of DEFINE_STATIC_LOCAL with NeverDestroyed</short_desc>
          <delta_ts>2013-12-23 19:24:32 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>962384</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-22 18:31:10 -0800</bug_when>
    <thetext>[WK2] Replace usage of DEFINE_STATIC_LOCAL with NeverDestroyed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962385</commentid>
    <comment_count>1</comment_count>
      <attachid>219888</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-22 18:31:43 -0800</bug_when>
    <thetext>Created attachment 219888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962386</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-22 18:34:31 -0800</bug_when>
    <thetext>Attachment 219888 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp&apos;, u&apos;Source/WebKit2/DatabaseProcess/DatabaseProcess.h&apos;, u&apos;Source/WebKit2/NetworkProcess/FileAPI/NetworkBlobRegistry.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkProcess.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkProcess.h&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm&apos;, u&apos;Source/WebKit2/Platform/CoreIPC/Connection.cpp&apos;, u&apos;Source/WebKit2/PluginProcess/PluginProcess.cpp&apos;, u&apos;Source/WebKit2/PluginProcess/PluginProcess.h&apos;, u&apos;Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm&apos;, u&apos;Source/WebKit2/Shared/ConnectionStack.cpp&apos;, u&apos;Source/WebKit2/Shared/Plugins/Netscape/NetscapePluginModule.cpp&apos;, u&apos;Source/WebKit2/Shared/WebContextMenuItem.cpp&apos;, u&apos;Source/WebKit2/Shared/WebPreferencesStore.cpp&apos;, u&apos;Source/WebKit2/Shared/mac/CookieStorageShim.cpp&apos;, u&apos;Source/WebKit2/Shared/mac/CookieStorageShim.h&apos;, u&apos;Source/WebKit2/UIProcess/Plugins/PluginProcessManager.cpp&apos;, u&apos;Source/WebKit2/UIProcess/Plugins/PluginProcessManager.h&apos;, u&apos;Source/WebKit2/UIProcess/WebContext.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebDatabaseManagerProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebInspectorProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageGroup.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/WebProcessProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/cf/WebBackForwardListCF.cpp&apos;, u&apos;Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp&apos;, u&apos;Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm&apos;, u&apos;Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBFactoryBackend.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.cpp&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm&apos;, u&apos;Source/WebKit2/WebProcess/Storage/StorageNamespaceImpl.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebProcess.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebProcess.h&apos;, u&apos;Source/WebKit2/config.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp:53:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/Shared/mac/CookieStorageShim.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:93:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/WebContext.cpp:117:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 46 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962396</commentid>
    <comment_count>3</comment_count>
      <attachid>219888</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-12-22 21:25:08 -0800</bug_when>
    <thetext>Comment on attachment 219888
Patch

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

&gt; Source/WebKit2/Shared/WebContextMenuItem.cpp:61
&gt; +    static NeverDestroyed&lt;WebContextMenuItem*&gt; separatorItem(adoptRef(new WebContextMenuItem(WebContextMenuItemData(WebCore::SeparatorType, WebCore::ContextMenuItemTagNoAction, String(), true, false))).leakRef());

This can just be a raw pointer!

&gt; Source/WebKit2/UIProcess/WebContext.cpp:117
&gt; +    static NeverDestroyed&lt;Vector&lt;WebContext*&gt;&gt; contexts;;

Extra semicolon.

&gt; Source/WebKit2/UIProcess/cf/WebBackForwardListCF.cpp:51
&gt; +    static CFNumberRef version = CFNumberCreate(0, kCFNumberCFIndexType, &amp;currentVersionAsCFIndex);

Nah, this doesn&apos;t need to be static.

&gt; Source/WebKit2/UIProcess/cf/WebBackForwardListCF.cpp:62
&gt; +static CFStringRef SessionHistoryVersionKey = CFSTR(&quot;SessionHistoryVersion&quot;);
&gt; +static CFStringRef SessionHistoryCurrentIndexKey = CFSTR(&quot;SessionHistoryCurrentIndex&quot;);
&gt; +static CFStringRef SessionHistoryEntriesKey = CFSTR(&quot;SessionHistoryEntries&quot;);
&gt; +static CFStringRef SessionHistoryEntryTitleKey = CFSTR(&quot;SessionHistoryEntryTitle&quot;);
&gt; +static CFStringRef SessionHistoryEntryURLKey = CFSTR(&quot;SessionHistoryEntryURL&quot;);
&gt; +static CFStringRef SessionHistoryEntryOriginalURLKey = CFSTR(&quot;SessionHistoryEntryOriginalURL&quot;);
&gt; +static CFStringRef SessionHistoryEntryDataKey = CFSTR(&quot;SessionHistoryEntryData&quot;);

Very nice. I think all these names should start with a lower case s.

&gt; Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp:45
&gt; +static CFStringRef SessionHistoryKey = CFSTR(&quot;SessionHistory&quot;);
&gt; +static CFStringRef ProvisionalURLKey = CFSTR(&quot;ProvisionalURL&quot;);

Lowercase s and p.

&gt; Source/WebKit2/WebProcess/Databases/IndexedDB/WebIDBServerConnection.cpp:50
&gt; +    static uint64_t identifier = 1;
&gt; +    return identifier++;

static uint64_t identifier;
return ++identifier;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962696</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-23 19:24:32 -0800</bug_when>
    <thetext>Committed r161045: &lt;http://trac.webkit.org/changeset/161045&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219888</attachid>
            <date>2013-12-22 18:31:43 -0800</date>
            <delta_ts>2013-12-22 21:25:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126144-20131222183143.patch</filename>
            <type>text/plain</type>
            <size>57508</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDk4MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExOCBAQAorMjAxMy0xMi0yMiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdIFJlcGxhY2UgdXNhZ2Ugb2Yg
REVGSU5FX1NUQVRJQ19MT0NBTCB3aXRoIE5ldmVyRGVzdHJveWVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxNDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFz
ZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OnNoYXJlZCk6
CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OnNoYXJlZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRvd25sb2Fk
TWFuYWdlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpp
bml0aWFsaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uSWRlbnRpZmllckJhc2UpOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpz
eW5jTWVzc2FnZVN0YXRlTWFwKToKKyAgICAgICAgKENvcmVJUEM6OkNvbm5lY3Rpb246OlN5bmNN
ZXNzYWdlU3RhdGU6OnN5bmNNZXNzYWdlU3RhdGVNYXBNdXRleCk6CisgICAgICAgICogUGx1Z2lu
UHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
czo6c2hhcmVkKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaDoKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpmdWxsc2NyZWVuV2luZG93VHJhY2tlcik6CisgICAgICAgICogU2hhcmVkL0Nvbm5l
Y3Rpb25TdGFjay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbm5lY3Rpb25TdGFjazo6c2hhcmVk
KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVkTmV0c2NhcGVQbHVnaW5Nb2R1bGVz
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpzZXBhcmF0b3JJdGVtKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmJvb2xUZXN0UnVu
bmVyT3ZlcnJpZGVzTWFwKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGlt
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29va2llU3RvcmFnZVNoaW06OnNoYXJlZCk6CisgICAg
ICAgICogU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5oOgorICAgICAgICAoV2ViS2l0OjpD
b29raWVTdG9yYWdlU2hpbTo6Q29va2llU3RvcmFnZVNoaW0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc01hbmFnZXI6OnNoYXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc01hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmNvbnRleHRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
RGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1h
bmFnZXJQcm94eTo6b3JpZ2luS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5h
Z2VyUHJveHk6Om9yaWdpblF1b3RhS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VN
YW5hZ2VyUHJveHk6Om9yaWdpblVzYWdlS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJh
c2VNYW5hZ2VyUHJveHk6OmRhdGFiYXNlRGV0YWlsc0tleSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRhdGFiYXNlTWFuYWdlclByb3h5OjpkYXRhYmFzZURldGFpbHNOYW1lS2V5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRhdGFiYXNlRGV0YWlsc0Rpc3BsYXlO
YW1lS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRhdGFi
YXNlRGV0YWlsc0V4cGVjdGVkVXNhZ2VLZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFz
ZU1hbmFnZXJQcm94eTo6ZGF0YWJhc2VEZXRhaWxzQ3VycmVudFVzYWdlS2V5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQYWdlR3JvdXBzOjpzaGFyZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
R3JvdXAuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3ZWJQYWdlR3JvdXBNYXApOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpFeGNlZWRlZERh
dGFiYXNlUXVvdGFSZWNvcmRzOjpzaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmV4ZWN1dGVFZGl0Q29tbWFuZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Omdsb2JhbFBhZ2VNYXApOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNl
c3Npb25IaXN0b3J5Q3VycmVudFZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVFbXB0
eVNlc3Npb25IaXN0b3J5RGljdGlvbmFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdDo6Y3JlYXRlQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9t
VjBDRkRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdDo6cmVzdG9yZUZyb21WMUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6ZXh0cmFjdEJhY2tGb3J3YXJkTGlzdEVudHJpZXNGcm9tQXJyYXkpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzdGFuZGFyZFVzZXJBZ2VudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2hh
cmVkRGF0YWJhc2VCYWNrZW5kTWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9J
bmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Omdl
bmVyYXRlU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbToKKyAgICAgICAgKFdlYktp
dDo6V0tET01Ob2RlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXS0RPTVJhbmdlQ2FjaGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRvbUhhbmRsZUNhY2hlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZG9tSGFuZGxlQ2FjaGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjphbGxFeHRlbnNpb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAo
V2ViS2l0OjphbGxXb3JsZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxFeGNlcHRp
b25TdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0
c2NhcGVQbHVnaW5NYWMubW06CisgICAgICAgIChXZWJLaXQ6OndpbmRvd01hcCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bG9jYWxTdG9yYWdlTmFtZXNwYWNlTWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkVkaXRvckNsaWVudDo6ZGlkQmVnaW5FZGl0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRp
dG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJFZGl0b3JDbGllbnQ6OmRpZEVuZEVkaXRpbmcpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRmFsbEJhY2spOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmlkVG9IaXN0b3J5SXRlbU1hcCk6CisgICAgICAgIChXZWJLaXQ6Omhp
c3RvcnlJdGVtVG9JRE1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZG93bmxvYWRNYW5hZ2VyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBjb25maWcuaDoKKwogMjAxMy0x
Mi0yMiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVS
VEJGIGFmdGVyIHIxNjA5NzEgdG8gdHJ5IHRvIG1ha2UgRUZMIGJ1aWxkIGFnYWluLgpJbmRleDog
U291cmNlL1dlYktpdDIvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvY29u
ZmlnLmgJKHJldmlzaW9uIDE2MDk3MCkKKysrIFNvdXJjZS9XZWJLaXQyL2NvbmZpZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NywxNCArNDcsNiBAQAogI2RlZmluZSBFWFRFUk5fQ19FTkQKICNlbmRp
ZgogCi0vLyBGb3IgZGVmaW5pbmcgZ2V0dGVycyB0byBhIHN0YXRpYyB2YWx1ZSwgd2hlcmUgdGhl
IGdldHRlcnMgaGF2ZSBpbnRlcm5hbCBsaW5rYWdlCi0jZGVmaW5lIERFRklORV9TVEFUSUNfR0VU
VEVSKHR5cGUsIG5hbWUsIGFyZ3VtZW50cykgXAotc3RhdGljIGNvbnN0IHR5cGUmIG5hbWUoKSBc
Ci17IFwKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKHR5cGUsIG5hbWUjI1ZhbHVlLCBhcmd1bWVu
dHMpOyBcCi0gICAgcmV0dXJuIG5hbWUjI1ZhbHVlOyBcCi19Ci0KICNpZmRlZiBfX2NwbHVzcGx1
cwogCiAvLyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGluIFdlYktpdDJQcmVm
aXguaCBmb3IgTWFjIE9TIFguCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIERhdGFiYXNlUHJvY2Vz
cyYgRGF0YWJhc2VQcm9jZXNzOjpzaGFyZWQoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
RGF0YWJhc2VQcm9jZXNzLCBkYXRhYmFzZVByb2Nlc3MsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RGF0YWJhc2VQcm9jZXNzPiBkYXRhYmFzZVByb2Nlc3M7CiAgICAgcmV0dXJuIGRh
dGFiYXNlUHJvY2VzczsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKICNpbmNsdWRlICJV
bmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogY2xhc3MgV29ya1F1ZXVlOwogCkBAIC00Myw2ICs0NCw3IEBAIHN0cnVjdCBEYXRh
YmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMKIAogY2xhc3MgRGF0YWJhc2VQcm9jZXNzIDog
cHVibGljIENoaWxkUHJvY2VzcyAgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFiYXNl
UHJvY2Vzcyk7CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPERhdGFiYXNlUHJvY2Vzcz47CiBw
dWJsaWM6CiAgICAgc3RhdGljIERhdGFiYXNlUHJvY2VzcyYgc2hhcmVkKCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJl
dmlzaW9uIDE2MDk3MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogTmV0d29ya1Byb2Nlc3MmIE5ldHdvcmtQcm9jZXNzOjpzaGFyZWQoKQogewotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoTmV0d29ya1Byb2Nlc3MsIG5ldHdvcmtQcm9jZXNzLCAoKSk7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE5ldHdvcmtQcm9jZXNzPiBuZXR3b3JrUHJvY2Vz
czsKICAgICByZXR1cm4gbmV0d29ya1Byb2Nlc3M7CiB9CiAKQEAgLTg4LDcgKzg4LDcgQEAgQXV0
aGVudGljYXRpb25NYW5hZ2VyJiBOZXR3b3JrUHJvY2Vzczo6YQogCiBEb3dubG9hZE1hbmFnZXIm
IE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIoKQogewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoRG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZE1hbmFnZXIsICh0aGlzKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPERvd25sb2FkTWFuYWdlcj4gZG93bmxvYWRNYW5hZ2VyKHRoaXMp
OwogICAgIHJldHVybiBkb3dubG9hZE1hbmFnZXI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMTYwOTcwKQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5o
IgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CkBAIC00Nyw2ICs0OCw4IEBAIHN0
cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIAogY2xhc3MgTmV0d29ya1By
b2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzLCBwcml2YXRlIERvd25sb2FkTWFuYWdlcjo6Q2xp
ZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrUHJvY2Vzcyk7CisgICAgZnJp
ZW5kIE5ldmVyRGVzdHJveWVkPE5ldHdvcmtQcm9jZXNzPjsKKyAgICBmcmllbmQgTmV2ZXJEZXN0
cm95ZWQ8RG93bmxvYWRNYW5hZ2VyPjsKIHB1YmxpYzoKICAgICBzdGF0aWMgTmV0d29ya1Byb2Nl
c3MmIHNoYXJlZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CShyZXZpc2lvbiAxNjA5NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5oIgog
CiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iUmVnaXN0cnlJbXBsLmg+CisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0zNCw4ICsz
NSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1T
dHJhdGVnaWVzOjppbml0aWFsaXplKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5ldHdv
cmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLCBwbGF0Zm9ybVN0cmF0ZWdpZXMsICgpKTsKLSAg
ICBzZXRQbGF0Zm9ybVN0cmF0ZWdpZXMoJnBsYXRmb3JtU3RyYXRlZ2llcyk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzPiBwbGF0Zm9y
bVN0cmF0ZWdpZXM7CisgICAgc2V0UGxhdGZvcm1TdHJhdGVnaWVzKCZwbGF0Zm9ybVN0cmF0ZWdp
ZXMuZ2V0KCkpOwogfQogCiBDb29raWVzU3RyYXRlZ3kqIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1T
dHJhdGVnaWVzOjpjcmVhdGVDb29raWVzU3RyYXRlZ3koKQpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuY3BwCShyZXZpc2lvbiAxNjA5NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC0zOSw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogTmV0d29ya0Jsb2JSZWdp
c3RyeSYgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoTmV0d29ya0Jsb2JSZWdpc3RyeSwg
cmVnaXN0cnksICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TmV0d29ya0Jsb2JSZWdp
c3RyeT4gcmVnaXN0cnk7CiAgICAgcmV0dXJuIHJlZ2lzdHJ5OwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxNjA5NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTk0LDcgKzk0LDcgQEAgUmVzb3VyY2VFcnJvciBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
Ygogc3RhdGljIFN0cmluZyYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVy
QmFzZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywgYmFzZSwgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGJhc2U7CiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAkocmV2aXNpb24gMTYwOTcwKQorKysg
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgpAQCAtNjMsMTMgKzY0
LDEzIEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJ1bkxvb3AqLCBTeW5jTWVzc2Fn
ZVN0YXRlKj4gU3luY01lc3NhZ2VTdGF0ZU1hcDsKICAgICBzdGF0aWMgU3luY01lc3NhZ2VTdGF0
ZU1hcCYgc3luY01lc3NhZ2VTdGF0ZU1hcCgpCiAgICAgewotICAgICAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN5bmNNZXNzYWdlU3RhdGVNYXAsIHN5bmNNZXNzYWdlU3RhdGVNYXAsICgpKTsKKyAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN5bmNNZXNzYWdlU3RhdGVNYXA+IHN5bmNNZXNz
YWdlU3RhdGVNYXA7CiAgICAgICAgIHJldHVybiBzeW5jTWVzc2FnZVN0YXRlTWFwOwogICAgIH0K
IAogICAgIHN0YXRpYyBNdXRleCYgc3luY01lc3NhZ2VTdGF0ZU1hcE11dGV4KCkKICAgICB7Ci0g
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoTXV0ZXgsIHN5bmNNZXNzYWdlU3RhdGVNYXBNdXRl
eCwgKCkpOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TXV0ZXg+IHN5bmNNZXNzYWdl
U3RhdGVNYXBNdXRleDsKICAgICAgICAgcmV0dXJuIHN5bmNNZXNzYWdlU3RhdGVNYXBNdXRleDsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Q
cm9jZXNzLmNwcAkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogUGx1Z2luUHJvY2VzcyYgUGx1Z2luUHJvY2Vzczo6c2hhcmVk
KCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFBsdWdpblByb2Nlc3MsIHBsdWdpblByb2Nl
c3MsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGx1Z2luUHJvY2Vzcz4gcGx1Z2lu
UHJvY2VzczsKICAgICByZXR1cm4gcGx1Z2luUHJvY2VzczsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgJKHJldmlzaW9uIDE2MDk3MCkK
KysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDaGlsZFByb2Nlc3MuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTQwLDYgKzQxLDcgQEAgc3RydWN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAg
ICAgICAgIAogY2xhc3MgUGx1Z2luUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBsdWdpblByb2Nlc3MpOworICAgIGZyaWVuZCBOZXZlckRl
c3Ryb3llZDxQbHVnaW5Qcm9jZXNzPjsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGx1Z2luUHJvY2Vz
cyYgc2hhcmVkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0
IDxzeXNleGl0cy5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTI3LDcgKzEy
OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRnVsbHNjcmVlbldpbmQKIAogc3RhdGlj
IEZ1bGxzY3JlZW5XaW5kb3dUcmFja2VyJiBmdWxsc2NyZWVuV2luZG93VHJhY2tlcigpCiB7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChGdWxsc2NyZWVuV2luZG93VHJhY2tlciwgZnVsbHNjcmVl
bldpbmRvd1RyYWNrZXIsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RnVsbHNjcmVl
bldpbmRvd1RyYWNrZXI+IGZ1bGxzY3JlZW5XaW5kb3dUcmFja2VyOwogICAgIHJldHVybiBmdWxs
c2NyZWVuV2luZG93VHJhY2tlcjsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
bm5lY3Rpb25TdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
bm5lY3Rpb25TdGFjay5jcHAJKHJldmlzaW9uIDE2MDk3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db25uZWN0aW9uU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTMg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uU3RhY2suaCIKIAor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Q29ubmVjdGlvblN0YWNrJiBDb25uZWN0aW9uU3RhY2s6OnNoYXJlZCgpCiB7Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDb25uZWN0aW9uU3RhY2ssIGNvbm5lY3Rpb25TdGFjaywgKCkpOwotCisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENvbm5lY3Rpb25TdGFjaz4gY29ubmVjdGlvblN0YWNr
OwogICAgIHJldHVybiBjb25uZWN0aW9uU3RhY2s7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwCShyZXZpc2lvbiAxNjA5NzApCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbnRleHRNZW51SXRlbS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTcsNyArNTgsNyBAQCBQYXNzUmVmUHRyPFdl
YkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4CiAKIFdlYkNvbnRleHRNZW51SXRlbSogV2ViQ29u
dGV4dE1lbnVJdGVtOjpzZXBhcmF0b3JJdGVtKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFdlYkNvbnRleHRNZW51SXRlbSosIHNlcGFyYXRvckl0ZW0sIChhZG9wdFJlZihuZXcgV2ViQ29u
dGV4dE1lbnVJdGVtKFdlYkNvbnRleHRNZW51SXRlbURhdGEoV2ViQ29yZTo6U2VwYXJhdG9yVHlw
ZSwgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpLCB0cnVlLCBm
YWxzZSkpKS5sZWFrUmVmKCkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViQ29udGV4
dE1lbnVJdGVtKj4gc2VwYXJhdG9ySXRlbShhZG9wdFJlZihuZXcgV2ViQ29udGV4dE1lbnVJdGVt
KFdlYkNvbnRleHRNZW51SXRlbURhdGEoV2ViQ29yZTo6U2VwYXJhdG9yVHlwZSwgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIFN0cmluZygpLCB0cnVlLCBmYWxzZSkpKS5sZWFr
UmVmKCkpOwogICAgIHJldHVybiBzZXBhcmF0b3JJdGVtOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCShyZXZpc2lvbiAxNjA5NzAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGb250U21vb3RoaW5nTGV2ZWwu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1NldHRpbmdzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC0zNyw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJQcmVmZXJlbmNlc0tl
eSB7CiAjZGVmaW5lIERFRklORV9LRVlfR0VUVEVSUyhLZXlVcHBlciwgS2V5TG93ZXIsIFR5cGVO
YW1lLCBUeXBlLCBEZWZhdWx0VmFsdWUpIFwKICAgICAgICAgY29uc3QgU3RyaW5nJiBLZXlMb3dl
ciMjS2V5KCkgXAogICAgICAgICB7IFwKLSAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBrZXksIChBU0NJSUxpdGVyYWwoI0tleVVwcGVyKSkpOyBcCisgICAgICAgICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBrZXkoQVNDSUlMaXRlcmFsKCNLZXlVcHBlcikp
OyBcCiAgICAgICAgICAgICByZXR1cm4ga2V5OyBcCiAgICAgICAgIH0KIApAQCAtNTEsNyArNTIs
NyBAQCB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBib29sPiBCb29sT3ZlcnJpCiAKIHN0YXRpYyBC
b29sT3ZlcnJpZGVzTWFwJiBib29sVGVzdFJ1bm5lck92ZXJyaWRlc01hcCgpCiB7Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChCb29sT3ZlcnJpZGVzTWFwLCBtYXAsICgpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Qm9vbE92ZXJyaWRlc01hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luTW9kdWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAJKHJldmlzaW9uIDE2MDk3MCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
TW9kdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDE0IEBACiAjaW5jbHVkZSAi
TW9kdWxlLmgiCiAjaW5jbHVkZSAiTlBSdW50aW1lVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiTmV0
c2NhcGVCcm93c2VyRnVuY3MuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0
aWMgVmVjdG9yPE5ldHNjYXBlUGx1Z2luTW9kdWxlKj4mIGluaXRpYWxpemVkTmV0c2NhcGVQbHVn
aW5Nb2R1bGVzKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxOZXRzY2FwZVBs
dWdpbk1vZHVsZSo+LCBpbml0aWFsaXplZE5ldHNjYXBlUGx1Z2luTW9kdWxlcywgKCkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8TmV0c2NhcGVQbHVnaW5Nb2R1bGUqPj4gaW5p
dGlhbGl6ZWROZXRzY2FwZVBsdWdpbk1vZHVsZXM7CiAgICAgcmV0dXJuIGluaXRpYWxpemVkTmV0
c2NhcGVQbHVnaW5Nb2R1bGVzOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L0Nvb2tpZVN0b3JhZ2VTaGltLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcAkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIENGRGljdGlvbmFyeVJlZiB3ZWJLaXRDb29raWVTdG9y
YQogCiBDb29raWVTdG9yYWdlU2hpbSYgQ29va2llU3RvcmFnZVNoaW06OnNoYXJlZCgpCiB7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDb29raWVTdG9yYWdlU2hpbSwgc3RvcmFnZSwgKCkpOwor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDb29raWVTdG9yYWdlU2hpbT4gc3RvcmFnZTsKICAg
ICByZXR1cm4gc3RvcmFnZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9D
b29raWVTdG9yYWdlU2hpbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvQ29va2llU3RvcmFnZVNoaW0uaAkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwx
OCArMjksMjIgQEAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBDb29raWVTdG9yYWdlU2hpbSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ29va2llU3RvcmFnZVNoaW0pOworICAgIGZyaWVuZCBOZXZlckRlc3Ryb3ll
ZDxDb29raWVTdG9yYWdlU2hpbT47CiBwdWJsaWM6CiAgICAgc3RhdGljIENvb2tpZVN0b3JhZ2VT
aGltJiBzaGFyZWQoKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgotICAg
IENvb2tpZVN0b3JhZ2VTaGltKCkgeyB9OworICAgIENvb2tpZVN0b3JhZ2VTaGltKCkKKyAgICB7
CisgICAgfQogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcAkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOCArMTE0LDcgQEAgUGFzc1JlZlB0cjxX
ZWJDb250ZXh0PiBXZWJDb250ZXh0OjpjcmVhdAogCiBzdGF0aWMgVmVjdG9yPFdlYkNvbnRleHQq
PiYgY29udGV4dHMoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFdlYkNvbnRl
eHQqPiwgY29udGV4dHMsICgpKTsKLQorICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8
V2ViQ29udGV4dCo+PiBjb250ZXh0czs7CiAgICAgcmV0dXJuIGNvbnRleHRzOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJEYXRhYmFzZU1hbmFnZXJQ
cm94eS5jcHAJKHJldmlzaW9uIDE2MDk3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJXZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eU9y
aWdpbi5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtNDYsNDkgKzQ3LDQ5IEBAIGNvbnN0IGNoYXIqIFdlYkRhdGFiYXNl
TWFuYWdlclByb3h5OjpzdXAKIAogU3RyaW5nIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5Ojpvcmln
aW5LZXkoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBrZXksIChBU0NJSUxp
dGVyYWwoIldlYkRhdGFiYXNlTWFuYWdlck9yaWdpbktleSIpKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4ga2V5KEFTQ0lJTGl0ZXJhbCgiV2ViRGF0YWJhc2VNYW5hZ2VyT3Jp
Z2luS2V5IikpOwogICAgIHJldHVybiBrZXk7CiB9CiAKIFN0cmluZyBXZWJEYXRhYmFzZU1hbmFn
ZXJQcm94eTo6b3JpZ2luUXVvdGFLZXkoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBrZXksIChBU0NJSUxpdGVyYWwoIldlYkRhdGFiYXNlTWFuYWdlck9yaWdpblF1b3RhS2V5
IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBrZXkoQVNDSUlMaXRlcmFs
KCJXZWJEYXRhYmFzZU1hbmFnZXJPcmlnaW5RdW90YUtleSIpKTsKICAgICByZXR1cm4ga2V5Owog
fQogCiBTdHJpbmcgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6Om9yaWdpblVzYWdlS2V5KCkKIHsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywga2V5LCAoQVNDSUlMaXRlcmFsKCJXZWJE
YXRhYmFzZU1hbmFnZXJPcmlnaW5Vc2FnZUtleSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4ga2V5KEFTQ0lJTGl0ZXJhbCgiV2ViRGF0YWJhc2VNYW5hZ2VyT3JpZ2luVXNh
Z2VLZXkiKSk7CiAgICAgcmV0dXJuIGtleTsKIH0KIAogU3RyaW5nIFdlYkRhdGFiYXNlTWFuYWdl
clByb3h5OjpkYXRhYmFzZURldGFpbHNLZXkoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBrZXksIChBU0NJSUxpdGVyYWwoIldlYkRhdGFiYXNlTWFuYWdlckRhdGFiYXNlRGV0
YWlsc0tleSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4ga2V5KEFTQ0lJ
TGl0ZXJhbCgiV2ViRGF0YWJhc2VNYW5hZ2VyRGF0YWJhc2VEZXRhaWxzS2V5IikpOwogICAgIHJl
dHVybiBrZXk7CiB9CiAKIFN0cmluZyBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGF0YWJhc2VE
ZXRhaWxzTmFtZUtleSgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGtleSwg
KEFTQ0lJTGl0ZXJhbCgiV2ViRGF0YWJhc2VNYW5hZ2VyRGF0YWJhc2VEZXRhaWxzTmFtZUtleSIp
KSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4ga2V5KEFTQ0lJTGl0ZXJhbCgi
V2ViRGF0YWJhc2VNYW5hZ2VyRGF0YWJhc2VEZXRhaWxzTmFtZUtleSIpKTsKICAgICByZXR1cm4g
a2V5OwogfQogCiBTdHJpbmcgV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHk6OmRhdGFiYXNlRGV0YWls
c0Rpc3BsYXlOYW1lS2V5KCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywga2V5
LCAoQVNDSUlMaXRlcmFsKCJXZWJEYXRhYmFzZU1hbmFnZXJEYXRhYmFzZURldGFpbHNEaXNwbGF5
TmFtZUtleSIpKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4ga2V5KEFTQ0lJ
TGl0ZXJhbCgiV2ViRGF0YWJhc2VNYW5hZ2VyRGF0YWJhc2VEZXRhaWxzRGlzcGxheU5hbWVLZXki
KSk7CiAgICAgcmV0dXJuIGtleTsKIH0KIAogU3RyaW5nIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5
OjpkYXRhYmFzZURldGFpbHNFeHBlY3RlZFVzYWdlS2V5KCkKIHsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKFN0cmluZywga2V5LCAoQVNDSUlMaXRlcmFsKCJXZWJEYXRhYmFzZU1hbmFnZXJEYXRh
YmFzZURldGFpbHNFeHBlY3RlZFVzYWdlS2V5IikpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBrZXkoQVNDSUlMaXRlcmFsKCJXZWJEYXRhYmFzZU1hbmFnZXJEYXRhYmFzZURl
dGFpbHNFeHBlY3RlZFVzYWdlS2V5IikpOwogICAgIHJldHVybiBrZXk7CiB9CiAKIFN0cmluZyBX
ZWJEYXRhYmFzZU1hbmFnZXJQcm94eTo6ZGF0YWJhc2VEZXRhaWxzQ3VycmVudFVzYWdlS2V5KCkK
IHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywga2V5LCAoQVNDSUlMaXRlcmFsKCJX
ZWJEYXRhYmFzZU1hbmFnZXJEYXRhYmFzZURldGFpbHNDdXJyZW50VXNhZ2VLZXkiKSkpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGtleShBU0NJSUxpdGVyYWwoIldlYkRhdGFi
YXNlTWFuYWdlckRhdGFiYXNlRGV0YWlsc0N1cnJlbnRVc2FnZUtleSIpKTsKICAgICByZXR1cm4g
a2V5OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5jcHAJKHJldmlzaW9uIDE2MDk3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQogI2luY2x1ZGUg
IldlYkluc3BlY3RvclNlcnZlci5oIgpAQCAtNjIsNyArNjMsNyBAQCBjbGFzcyBXZWJJbnNwZWN0
b3JQYWdlR3JvdXBzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViSW5zcGVjdG9yUGFnZUdyb3Vw
cyYgc2hhcmVkKCkKICAgICB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoV2ViSW5zcGVj
dG9yUGFnZUdyb3VwcywgaW5zdGFuY2UsICgpKTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFdlYkluc3BlY3RvclBhZ2VHcm91cHM+IGluc3RhbmNlOwogICAgICAgICByZXR1cm4gaW5z
dGFuY2U7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdy
b3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdy
b3VwLmNwcAkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC00NSw3ICs0Niw3IEBAIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZUdyb3VwKj4K
IAogc3RhdGljIFdlYlBhZ2VHcm91cE1hcCYgd2ViUGFnZUdyb3VwTWFwKCkKIHsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFdlYlBhZ2VHcm91cE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFdlYlBhZ2VHcm91cE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAxNjA5NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVy
RW1iZWRkZWRPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCkBAIC0xMjksNiArMTMwLDcgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdU
Rjo6UmVmQ291bnRlZAogCiBjbGFzcyBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPEV4Y2VlZGVk
RGF0YWJhc2VRdW90YVJlY29yZHM+OwogcHVibGljOgogICAgIHN0cnVjdCBSZWNvcmQgewogICAg
ICAgICB1aW50NjRfdCBmcmFtZUlEOwpAQCAtMTYzLDcgKzE2NSw3IEBAIHByaXZhdGU6CiAKIEV4
Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6
OnNoYXJlZCgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChFeGNlZWRlZERhdGFiYXNlUXVv
dGFSZWNvcmRzLCByZWNvcmRzLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YVJlY29yZHM+IHJlY29yZHM7CiAgICAgcmV0dXJuIHJlY29yZHM7CiB9
CiAKQEAgLTEwNjQsMTAgKzEwNjYsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW50YWlu
c0luYWN0aXZlUwogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZChj
b25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogeworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGlnbm9yZVNwZWxsaW5nQ29tbWFuZE5hbWUoQVNDSUlMaXRlcmFsKCJpZ25vcmVTcGVs
bGluZyIpKTsKKwogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaWdub3JlU3BlbGxpbmdDb21tYW5kTmFtZSwgKEFT
Q0lJTGl0ZXJhbCgiaWdub3JlU3BlbGxpbmciKSkpOwogICAgIGlmIChjb21tYW5kTmFtZSA9PSBp
Z25vcmVTcGVsbGluZ0NvbW1hbmROYW1lKQogICAgICAgICArK21fcGVuZGluZ0xlYXJuT3JJZ25v
cmVXb3JkTWVzc2FnZUNvdW50OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzQsNyArNzUs
NyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKQogc3RhdGljIFdlYlByb2Nlc3NQ
cm94eTo6V2ViUGFnZVByb3h5TWFwJiBnbG9iYWxQYWdlTWFwKCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoV2ViUHJvY2Vzc1Byb3h5
OjpXZWJQYWdlUHJveHlNYXAsIHBhZ2VNYXAsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8V2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXA+IHBhZ2VNYXA7CiAgICAgcmV0dXJu
IHBhZ2VNYXA7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAJKHJldmlzaW9uIDE2MDk3MCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogUGx1Z2luUHJvY2Vzc01hbmFnZXImIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaGFyZWQoKQog
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGx1Z2luUHJvY2Vzc01hbmFnZXIsIHBsdWdpblBy
b2Nlc3NNYW5hZ2VyLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBsdWdpblByb2Nl
c3NNYW5hZ2VyPiBwbHVnaW5Qcm9jZXNzTWFuYWdlcjsKICAgICByZXR1cm4gcGx1Z2luUHJvY2Vz
c01hbmFnZXI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAkocmV2aXNpb24gMTYwOTcwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNTAsNiArNTEsNyBA
QCBjbGFzcyBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXI7CiAKIGNsYXNzIFBsdWdpblByb2Nlc3NN
YW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQbHVnaW5Qcm9jZXNzTWFuYWdlcik7
CisgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFBsdWdpblByb2Nlc3NNYW5hZ2VyPjsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGx1Z2luUHJvY2Vzc01hbmFnZXImIHNoYXJlZCgpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RD
Ri5jcHAJKHJldmlzaW9uIDE2MDk3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9X
ZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDkgQEAK
ICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NCwy
MiArNDUsMjcgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdAogICAg
IHJldHVybiB1bmlxdWVIaXN0b3J5SXRlbUlEOwogfQogCi1zdGF0aWMgQ0ZJbmRleCBjdXJyZW50
VmVyc2lvbiA9IDE7Ci1ERUZJTkVfU1RBVElDX0dFVFRFUihDRk51bWJlclJlZiwgU2Vzc2lvbkhp
c3RvcnlDdXJyZW50VmVyc2lvbiwgKENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckNGSW5kZXhU
eXBlLCAmY3VycmVudFZlcnNpb24pKSk7CitzdGF0aWMgQ0ZOdW1iZXJSZWYgU2Vzc2lvbkhpc3Rv
cnlDdXJyZW50VmVyc2lvbigpCit7CisgICAgc3RhdGljIENGSW5kZXggY3VycmVudFZlcnNpb25B
c0NGSW5kZXggPSAxOworICAgIHN0YXRpYyBDRk51bWJlclJlZiB2ZXJzaW9uID0gQ0ZOdW1iZXJD
cmVhdGUoMCwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsICZjdXJyZW50VmVyc2lvbkFzQ0ZJbmRleCk7
CisKKyAgICByZXR1cm4gdmVyc2lvbjsKK30KIAotREVGSU5FX1NUQVRJQ19HRVRURVIoQ0ZTdHJp
bmdSZWYsIFNlc3Npb25IaXN0b3J5VmVyc2lvbktleSwgKENGU1RSKCJTZXNzaW9uSGlzdG9yeVZl
cnNpb24iKSkpOwotREVGSU5FX1NUQVRJQ19HRVRURVIoQ0ZTdHJpbmdSZWYsIFNlc3Npb25IaXN0
b3J5Q3VycmVudEluZGV4S2V5LCAoQ0ZTVFIoIlNlc3Npb25IaXN0b3J5Q3VycmVudEluZGV4Iikp
KTsKLURFRklORV9TVEFUSUNfR0VUVEVSKENGU3RyaW5nUmVmLCBTZXNzaW9uSGlzdG9yeUVudHJp
ZXNLZXksIChDRlNUUigiU2Vzc2lvbkhpc3RvcnlFbnRyaWVzIikpKTsKLURFRklORV9TVEFUSUNf
R0VUVEVSKENGU3RyaW5nUmVmLCBTZXNzaW9uSGlzdG9yeUVudHJ5VGl0bGVLZXksIChDRlNUUigi
U2Vzc2lvbkhpc3RvcnlFbnRyeVRpdGxlIikpKTsKLURFRklORV9TVEFUSUNfR0VUVEVSKENGU3Ry
aW5nUmVmLCBTZXNzaW9uSGlzdG9yeUVudHJ5VVJMS2V5LCAoQ0ZTVFIoIlNlc3Npb25IaXN0b3J5
RW50cnlVUkwiKSkpOwotREVGSU5FX1NUQVRJQ19HRVRURVIoQ0ZTdHJpbmdSZWYsIFNlc3Npb25I
aXN0b3J5RW50cnlPcmlnaW5hbFVSTEtleSwgKENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5T3Jp
Z2luYWxVUkwiKSkpOwotREVGSU5FX1NUQVRJQ19HRVRURVIoQ0ZTdHJpbmdSZWYsIFNlc3Npb25I
aXN0b3J5RW50cnlEYXRhS2V5LCAoQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cnlEYXRhIikpKTsK
K3N0YXRpYyBDRlN0cmluZ1JlZiBTZXNzaW9uSGlzdG9yeVZlcnNpb25LZXkgPSBDRlNUUigiU2Vz
c2lvbkhpc3RvcnlWZXJzaW9uIik7CitzdGF0aWMgQ0ZTdHJpbmdSZWYgU2Vzc2lvbkhpc3RvcnlD
dXJyZW50SW5kZXhLZXkgPSBDRlNUUigiU2Vzc2lvbkhpc3RvcnlDdXJyZW50SW5kZXgiKTsKK3N0
YXRpYyBDRlN0cmluZ1JlZiBTZXNzaW9uSGlzdG9yeUVudHJpZXNLZXkgPSBDRlNUUigiU2Vzc2lv
bkhpc3RvcnlFbnRyaWVzIik7CitzdGF0aWMgQ0ZTdHJpbmdSZWYgU2Vzc2lvbkhpc3RvcnlFbnRy
eVRpdGxlS2V5ID0gQ0ZTVFIoIlNlc3Npb25IaXN0b3J5RW50cnlUaXRsZSIpOworc3RhdGljIENG
U3RyaW5nUmVmIFNlc3Npb25IaXN0b3J5RW50cnlVUkxLZXkgPSBDRlNUUigiU2Vzc2lvbkhpc3Rv
cnlFbnRyeVVSTCIpOworc3RhdGljIENGU3RyaW5nUmVmIFNlc3Npb25IaXN0b3J5RW50cnlPcmln
aW5hbFVSTEtleSA9IENGU1RSKCJTZXNzaW9uSGlzdG9yeUVudHJ5T3JpZ2luYWxVUkwiKTsKK3N0
YXRpYyBDRlN0cmluZ1JlZiBTZXNzaW9uSGlzdG9yeUVudHJ5RGF0YUtleSA9IENGU1RSKCJTZXNz
aW9uSGlzdG9yeUVudHJ5RGF0YSIpOwogCiBzdGF0aWMgYm9vbCBleHRyYWN0QmFja0ZvcndhcmRM
aXN0RW50cmllc0Zyb21BcnJheShDRkFycmF5UmVmLCBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9y
Jik7CiAKIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgY3JlYXRlRW1wdHlTZXNzaW9uSGlzdG9yeURp
Y3Rpb25hcnkoKQogewotICAgIHN0YXRpYyBjb25zdCB2b2lkKiBrZXlzWzFdID0geyBTZXNzaW9u
SGlzdG9yeVZlcnNpb25LZXkoKSB9OworICAgIHN0YXRpYyBjb25zdCB2b2lkKiBrZXlzWzFdID0g
eyBTZXNzaW9uSGlzdG9yeVZlcnNpb25LZXkgfTsKICAgICBzdGF0aWMgY29uc3Qgdm9pZCogdmFs
dWVzWzFdID0geyBTZXNzaW9uSGlzdG9yeUN1cnJlbnRWZXJzaW9uKCkgfTsKIAogICAgIHJldHVy
biBDRkRpY3Rpb25hcnlDcmVhdGUoMCwga2V5cywgdmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKQEAgLTEw
NSw3ICsxMTEsNyBAQCBDRkRpY3Rpb25hcnlSZWYgV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhCiAg
ICAgICAgIC8vIGNvbnN0YW50IGluIFdlYlBhZ2VQcm94eUNGLmNwcC4gVGhlIENvcmVJUEMgZGF0
YSBmb3JtYXQgaXMgbWVhbnQgdG8gYmUgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgbm90
IHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSB3cml0dGVuIHRvIGRpc2suCiAgICAgICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGVudHJ5RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIG1fZW50cmllc1tpXS0+YmFja0ZvcndhcmREYXRhKCkuZGF0YSgpLCBtX2Vu
dHJpZXNbaV0tPmJhY2tGb3J3YXJkRGF0YSgpLnNpemUoKSkpOwogICAgICAgICAKLSAgICAgICAg
Y29uc3Qgdm9pZCoga2V5c1s0XSA9IHsgU2Vzc2lvbkhpc3RvcnlFbnRyeVVSTEtleSgpLCBTZXNz
aW9uSGlzdG9yeUVudHJ5VGl0bGVLZXkoKSwgU2Vzc2lvbkhpc3RvcnlFbnRyeU9yaWdpbmFsVVJM
S2V5KCksIFNlc3Npb25IaXN0b3J5RW50cnlEYXRhS2V5KCkgfTsKKyAgICAgICAgY29uc3Qgdm9p
ZCoga2V5c1s0XSA9IHsgU2Vzc2lvbkhpc3RvcnlFbnRyeVVSTEtleSwgU2Vzc2lvbkhpc3RvcnlF
bnRyeVRpdGxlS2V5LCBTZXNzaW9uSGlzdG9yeUVudHJ5T3JpZ2luYWxVUkxLZXksIFNlc3Npb25I
aXN0b3J5RW50cnlEYXRhS2V5IH07CiAgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1s0XSA9IHsg
dXJsLmdldCgpLCB0aXRsZS5nZXQoKSwgb3JpZ2luYWxVUkwuZ2V0KCksIGVudHJ5RGF0YS5nZXQo
KSB9OwogCiAgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGVudHJ5RGljdGlvbmFy
eSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIGtleXMsIHZhbHVlcywgNCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cykpOwpAQCAtMTMwLDcgKzEzNiw3IEBAIENGRGljdGlvbmFyeVJlZiBXZWJCYWNrRm9yd2FyZExp
c3Q6OmNyZWEKIAogICAgIGlmIChoYXNDdXJyZW50SW5kZXgpIHsKICAgICAgICAgUmV0YWluUHRy
PENGTnVtYmVyUmVmPiBjdXJyZW50SW5kZXhOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRl
KDAsIGtDRk51bWJlckNGSW5kZXhUeXBlLCAmY3VycmVudEluZGV4KSk7Ci0gICAgICAgIGNvbnN0
IHZvaWQqIGtleXNbM10gPSB7IFNlc3Npb25IaXN0b3J5VmVyc2lvbktleSgpLCBTZXNzaW9uSGlz
dG9yeUN1cnJlbnRJbmRleEtleSgpLCBTZXNzaW9uSGlzdG9yeUVudHJpZXNLZXkoKSB9OworICAg
ICAgICBjb25zdCB2b2lkKiBrZXlzWzNdID0geyBTZXNzaW9uSGlzdG9yeVZlcnNpb25LZXksIFNl
c3Npb25IaXN0b3J5Q3VycmVudEluZGV4S2V5LCBTZXNzaW9uSGlzdG9yeUVudHJpZXNLZXkgfTsK
ICAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzWzNdID0geyBTZXNzaW9uSGlzdG9yeUN1cnJlbnRW
ZXJzaW9uKCksIGN1cnJlbnRJbmRleE51bWJlci5nZXQoKSwgZW50cmllcy5nZXQoKSB9OwogIAog
ICAgICAgICByZXR1cm4gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIGtleXMsIHZhbHVlcywgMywgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcyk7CkBAIC0xNDIsNyArMTQ4LDcgQEAgQ0ZEaWN0aW9uYXJ5UmVmIFdlYkJhY2tGb3J3YXJk
TGlzdDo6Y3JlYQogCiBib29sIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21DRkRpY3Rp
b25hcnlSZXByZXNlbnRhdGlvbihDRkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKIHsKLSAgICBD
Rk51bWJlclJlZiBjZlZlcnNpb24gPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZGljdGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlWZXJzaW9uS2V5KCkpOworICAgIENGTnVtYmVyUmVm
IGNmVmVyc2lvbiA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5
LCBTZXNzaW9uSGlzdG9yeVZlcnNpb25LZXkpOwogICAgIGlmICghY2ZWZXJzaW9uKSB7CiAgICAg
ICAgIC8vIHYwIHNlc3Npb24gaGlzdG9yeSBkaWN0aW9uYXJpZXMgZGlkIG5vdCBjb250YWluIHZl
cnNpb25pbmcKICAgICAgICAgcmV0dXJuIHJlc3RvcmVGcm9tVjBDRkRpY3Rpb25hcnlSZXByZXNl
bnRhdGlvbihkaWN0aW9uYXJ5KTsKQEAgLTE2OCw3ICsxNzQsNyBAQCBib29sIFdlYkJhY2tGb3J3
YXJkTGlzdDo6cmVzdG9yZUZyb21DRkRpCiAKIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0
b3JlRnJvbVYwQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rp
b25hcnkpCiB7Ci0gICAgQ0ZOdW1iZXJSZWYgY2ZJbmRleCA9IChDRk51bWJlclJlZilDRkRpY3Rp
b25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBTZXNzaW9uSGlzdG9yeUN1cnJlbnRJbmRleEtleSgp
KTsKKyAgICBDRk51bWJlclJlZiBjZkluZGV4ID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdl
dFZhbHVlKGRpY3Rpb25hcnksIFNlc3Npb25IaXN0b3J5Q3VycmVudEluZGV4S2V5KTsKICAgICBp
ZiAoIWNmSW5kZXggfHwgQ0ZHZXRUeXBlSUQoY2ZJbmRleCkgIT0gQ0ZOdW1iZXJHZXRUeXBlSUQo
KSkgewogICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGRpY3Rp
b25hcnkgcmVwcmVzZW50YXRpb24gZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGN1cnJlbnQgaW5kZXgi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg1LDcgKzE5MSw3IEBAIGJvb2wgV2ViQmFj
a0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVYwQ0YKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIENGQXJyYXlSZWYgY2ZFbnRyaWVzID0gKENGQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZGljdGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlFbnRyaWVzS2V5KCkpOworICAgIENG
QXJyYXlSZWYgY2ZFbnRyaWVzID0gKENGQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGlj
dGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlFbnRyaWVzS2V5KTsKICAgICBpZiAoIWNmRW50cmllcyB8
fCBDRkdldFR5cGVJRChjZkVudHJpZXMpICE9IENGQXJyYXlHZXRUeXBlSUQoKSkgewogICAgICAg
ICBMT0coU2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnkgcmVwcmVz
ZW50YXRpb24gZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGxpc3Qgb2YgZW50cmllcyIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yMjIsNyArMjI4LDcgQEAgYm9vbCBXZWJCYWNrRm9yd2FyZExp
c3Q6OnJlc3RvcmVGcm9tVjBDRgogCiBib29sIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZy
b21WMUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
KQogewotICAgIENGTnVtYmVyUmVmIGNmSW5kZXggPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZGljdGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlDdXJyZW50SW5kZXhLZXkoKSk7Cisg
ICAgQ0ZOdW1iZXJSZWYgY2ZJbmRleCA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShkaWN0aW9uYXJ5LCBTZXNzaW9uSGlzdG9yeUN1cnJlbnRJbmRleEtleSk7CiAgICAgaWYgKCFj
ZkluZGV4KSB7CiAgICAgICAgIC8vIE5vIGN1cnJlbnQgaW5kZXggbWVhbnMgdGhlIGRpY3Rpb25h
cnkgcmVwcmVzZW50cyBhbiBlbXB0eSBzZXNzaW9uLgogICAgICAgICBtX2hhc0N1cnJlbnRJbmRl
eCA9IGZhbHNlOwpAQCAtMjQ4LDcgKzI1NCw3IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0Ojpy
ZXN0b3JlRnJvbVYxQ0YKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIENGQXJy
YXlSZWYgY2ZFbnRyaWVzID0gKENGQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlv
bmFyeSwgU2Vzc2lvbkhpc3RvcnlFbnRyaWVzS2V5KCkpOworICAgIENGQXJyYXlSZWYgY2ZFbnRy
aWVzID0gKENGQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgU2Vzc2lv
bkhpc3RvcnlFbnRyaWVzS2V5KTsKICAgICBpZiAoIWNmRW50cmllcyB8fCBDRkdldFR5cGVJRChj
ZkVudHJpZXMpICE9IENGQXJyYXlHZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coU2Vzc2lvblN0
YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnkgcmVwcmVzZW50YXRpb24gZG9lcyBu
b3QgaGF2ZSBhIHZhbGlkIGxpc3Qgb2YgZW50cmllcyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yODcsMjUgKzI5MywyNSBAQCBzdGF0aWMgYm9vbCBleHRyYWN0QmFja0ZvcndhcmRMaXN0
RW50cmllCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIENGU3RyaW5nUmVmIGVudHJ5VVJMID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdl
dFZhbHVlKGVudHJ5RGljdGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlFbnRyeVVSTEtleSgpKTsKKyAg
ICAgICAgQ0ZTdHJpbmdSZWYgZW50cnlVUkwgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZW50cnlEaWN0aW9uYXJ5LCBTZXNzaW9uSGlzdG9yeUVudHJ5VVJMS2V5KTsKICAgICAg
ICAgaWYgKCFlbnRyeVVSTCB8fCBDRkdldFR5cGVJRChlbnRyeVVSTCkgIT0gQ0ZTdHJpbmdHZXRU
eXBlSUQoKSkgewogICAgICAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJk
TGlzdCBlbnRyeSBhdCBpbmRleCAlaSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgVVJMIiwgKGludClp
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIENGU3Ry
aW5nUmVmIGVudHJ5VGl0bGUgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZW50
cnlEaWN0aW9uYXJ5LCBTZXNzaW9uSGlzdG9yeUVudHJ5VGl0bGVLZXkoKSk7CisgICAgICAgIENG
U3RyaW5nUmVmIGVudHJ5VGl0bGUgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZW50cnlEaWN0aW9uYXJ5LCBTZXNzaW9uSGlzdG9yeUVudHJ5VGl0bGVLZXkpOwogICAgICAgICBp
ZiAoIWVudHJ5VGl0bGUgfHwgQ0ZHZXRUeXBlSUQoZW50cnlUaXRsZSkgIT0gQ0ZTdHJpbmdHZXRU
eXBlSUQoKSkgewogICAgICAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJk
TGlzdCBlbnRyeSBhdCBpbmRleCAlaSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgdGl0bGUiLCAoaW50
KWkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgQ0ZT
dHJpbmdSZWYgb3JpZ2luYWxVUkwgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
ZW50cnlEaWN0aW9uYXJ5LCBTZXNzaW9uSGlzdG9yeUVudHJ5T3JpZ2luYWxVUkxLZXkoKSk7Cisg
ICAgICAgIENGU3RyaW5nUmVmIG9yaWdpbmFsVVJMID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKGVudHJ5RGljdGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlFbnRyeU9yaWdpbmFsVVJM
S2V5KTsKICAgICAgICAgaWYgKCFvcmlnaW5hbFVSTCB8fCBDRkdldFR5cGVJRChvcmlnaW5hbFVS
TCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewogICAgICAgICAgICAgTE9HKFNlc3Npb25TdGF0
ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBpbmRleCAlaSBkb2VzIG5vdCBoYXZlIGEg
dmFsaWQgb3JpZ2luYWwgVVJMIiwgKGludClpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCi0gICAgICAgIENGRGF0YVJlZiBiYWNrRm9yd2FyZERhdGEgPSAoQ0ZEYXRh
UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGVudHJ5RGljdGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlF
bnRyeURhdGFLZXkoKSk7CisgICAgICAgIENGRGF0YVJlZiBiYWNrRm9yd2FyZERhdGEgPSAoQ0ZE
YXRhUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGVudHJ5RGljdGlvbmFyeSwgU2Vzc2lvbkhpc3Rv
cnlFbnRyeURhdGFLZXkpOwogICAgICAgICBpZiAoIWJhY2tGb3J3YXJkRGF0YSB8fCBDRkdldFR5
cGVJRChiYWNrRm9yd2FyZERhdGEpICE9IENGRGF0YUdldFR5cGVJRCgpKSB7CiAgICAgICAgICAg
ICBMT0coU2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGVudHJ5IGF0IGluZGV4ICVp
IGRvZXMgbm90IGhhdmUgYmFjay9mb3J3YXJkIGRhdGEiLCAoaW50KWkpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQ
cm94eUNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2Vi
UGFnZVByb3h5Q0YuY3BwCShyZXZpc2lvbiAxNjA5NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotREVG
SU5FX1NUQVRJQ19HRVRURVIoQ0ZTdHJpbmdSZWYsIFNlc3Npb25IaXN0b3J5S2V5LCAoQ0ZTVFIo
IlNlc3Npb25IaXN0b3J5IikpKTsKLURFRklORV9TVEFUSUNfR0VUVEVSKENGU3RyaW5nUmVmLCBQ
cm92aXNpb25hbFVSTEtleSwgKENGU1RSKCJQcm92aXNpb25hbFVSTCIpKSk7CitzdGF0aWMgQ0ZT
dHJpbmdSZWYgU2Vzc2lvbkhpc3RvcnlLZXkgPSBDRlNUUigiU2Vzc2lvbkhpc3RvcnkiKTsKK3N0
YXRpYyBDRlN0cmluZ1JlZiBQcm92aXNpb25hbFVSTEtleSA9IENGU1RSKCJQcm92aXNpb25hbFVS
TCIpOwogCiBzdGF0aWMgY29uc3QgVUludDMyIEN1cnJlbnRTZXNzaW9uU3RhdGVEYXRhVmVyc2lv
biA9IDI7CiAKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc1JlZlB0cjxBUEk6OkRhdGE+IFdlYlBhZ2VQ
cm94eTo6c2VzcwogCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gc2Vzc2lvbkhpc3Rv
cnlEaWN0aW9uYXJ5ID0gYWRvcHRDRihtX2JhY2tGb3J3YXJkTGlzdC0+Y3JlYXRlQ0ZEaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb24oZmlsdGVyLCBjb250ZXh0KSk7CiAgICAgaWYgKHNlc3Npb25IaXN0
b3J5RGljdGlvbmFyeSkgewotICAgICAgICBrZXlzW251bVZhbHVlc10gPSBTZXNzaW9uSGlzdG9y
eUtleSgpOworICAgICAgICBrZXlzW251bVZhbHVlc10gPSBTZXNzaW9uSGlzdG9yeUtleTsKICAg
ICAgICAgdmFsdWVzW251bVZhbHVlc10gPSBzZXNzaW9uSGlzdG9yeURpY3Rpb25hcnkuZ2V0KCk7
CiAgICAgICAgICsrbnVtVmFsdWVzOwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgUGFzc1JlZlB0
cjxBUEk6OkRhdGE+IFdlYlBhZ2VQcm94eTo6c2VzcwogICAgICAgICAgICAgcHJvdmlzaW9uYWxV
UkwgPSBtX21haW5GcmFtZS0+cHJvdmlzaW9uYWxVUkwoKTsKICAgICAgICAgaWYgKCFwcm92aXNp
b25hbFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHByb3Zpc2lvbmFsVVJMU3RyaW5nID0g
cHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAgIGtleXNbbnVtVmFs
dWVzXSA9IFByb3Zpc2lvbmFsVVJMS2V5KCk7CisgICAgICAgICAgICBrZXlzW251bVZhbHVlc10g
PSBQcm92aXNpb25hbFVSTEtleTsKICAgICAgICAgICAgIHZhbHVlc1tudW1WYWx1ZXNdID0gcHJv
dmlzaW9uYWxVUkxTdHJpbmcuZ2V0KCk7CiAgICAgICAgICAgICArK251bVZhbHVlczsKICAgICAg
ICAgfQpAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNl
c3Npb25TdGEKICAgICB9CiAKICAgICBDRkRpY3Rpb25hcnlSZWYgYmFja0ZvcndhcmRMaXN0RGlj
dGlvbmFyeSA9IDA7Ci0gICAgaWYgKENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZh
bHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4ocHJvcGVydHlMaXN0LmdldCgpKSwgU2Vz
c2lvbkhpc3RvcnlLZXkoKSkpIHsKKyAgICBpZiAoQ0ZUeXBlUmVmIHZhbHVlID0gQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihwcm9wZXJ0eUxpc3QuZ2V0
KCkpLCBTZXNzaW9uSGlzdG9yeUtleSkpIHsKICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVl
KSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKICAgICAgICAgICAgIExPRyhTZXNzaW9uU3Rh
dGUsICJTZXNzaW9uU3RhdGUgZGljdGlvbmFyeSBoYXMgYSBTZXNzaW9uSGlzdG9yeSBrZXksIGJ1
dCB0aGUgdmFsdWUgaXMgbm90IGEgZGljdGlvbmFyeSIpOwogICAgICAgICBlbHNlCkBAIC0xNDQs
NyArMTQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YQogICAg
IH0KIAogICAgIENGU3RyaW5nUmVmIHByb3Zpc2lvbmFsVVJMID0gMDsKLSAgICBpZiAoQ0ZUeXBl
UmVmIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5
UmVmPihwcm9wZXJ0eUxpc3QuZ2V0KCkpLCBQcm92aXNpb25hbFVSTEtleSgpKSkgeworICAgIGlm
IChDRlR5cGVSZWYgdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KHByb3BlcnR5TGlzdC5nZXQoKSksIFByb3Zpc2lvbmFsVVJMS2V5KSkgewog
ICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCiAg
ICAgICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiU2Vzc2lvblN0YXRlIGRpY3Rpb25hcnkgaGFz
IGEgUHJvdmlzaW9uYWxWYWx1ZSBrZXksIGJ1dCB0aGUgdmFsdWUgaXMgbm90IGEgc3RyaW5nIik7
CiAgICAgICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCShyZXZpc2lvbiAxNjA5NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsNiAr
NDcsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaD4KICNp
bXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4K
KyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaD4KIAogQGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChEZXRhaWxzKQpAQCAt
MTA1LDEyICsxMDYsMTIgQEAgc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVdlYktpdFZlcnNpb25T
dAogCiBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJpbmcm
IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgb3NWZXJzaW9uLCAoc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0
cmluZygpKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHdlYktpdFZlcnNpb24s
ICh1c2VyVmlzaWJsZVdlYktpdFZlcnNpb25TdHJpbmcoKSkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IG9zVmVyc2lvbihzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFn
ZW50U3RyaW5nKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHdlYktpdFZl
cnNpb24odXNlclZpc2libGVXZWJLaXRWZXJzaW9uU3RyaW5nKCkpOwogCiAgICAgaWYgKGFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtYWtlU3Ry
aW5nKCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyAiIFBST0NFU1NPUiAiIE1hYyBPUyBYICIsIG9z
VmVyc2lvbiwgIikgQXBwbGVXZWJLaXQvIiwgd2ViS2l0VmVyc2lvbiwgIiAoS0hUTUwsIGxpa2Ug
R2Vja28pIik7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7
ICIgUFJPQ0VTU09SICIgTWFjIE9TIFggIiwgb3NWZXJzaW9uLCAiKSBBcHBsZVdlYktpdC8iLCB3
ZWJLaXRWZXJzaW9uLCAiIChLSFRNTCwgbGlrZSBHZWNrbykgIiwgYXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wIChNYWNp
bnRvc2g7ICIgUFJPQ0VTU09SICIgTWFjIE9TIFggIiwgb3NWZXJzaW9uLmdldCgpLCAiKSBBcHBs
ZVdlYktpdC8iLCB3ZWJLaXRWZXJzaW9uLmdldCgpLCAiIChLSFRNTCwgbGlrZSBHZWNrbykiKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgIiBQUk9DRVNT
T1IgIiBNYWMgT1MgWCAiLCBvc1ZlcnNpb24uZ2V0KCksICIpIEFwcGxlV2ViS2l0LyIsIHdlYktp
dFZlcnNpb24uZ2V0KCksICIgKEtIVE1MLCBsaWtlIEdlY2tvKSAiLCBhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0SXNTcGVha2luZyhib29s
JiBpc1NwZWFraW5nKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxNjA5NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzIsNyArNDcyLDcgQEAgRG93bmxvYWRNYW5h
Z2VyJiBXZWJQcm9jZXNzOjpkb3dubG9hZE1hbgogICAgIEFTU0VSVCghbV91c2VzTmV0d29ya1By
b2Nlc3MpOwogI2VuZGlmCiAKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERvd25sb2FkTWFuYWdl
ciwgZG93bmxvYWRNYW5hZ2VyLCAodGhpcykpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxE
b3dubG9hZE1hbmFnZXI+IGRvd25sb2FkTWFuYWdlcih0aGlzKTsKICAgICByZXR1cm4gZG93bmxv
YWRNYW5hZ2VyOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmg+CiAK
QEAgLTg0LDYgKzg1LDcgQEAgY2xhc3MgV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOwog
I2VuZGlmCiAKIGNsYXNzIFdlYlByb2Nlc3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzLCBwcml2YXRl
IERvd25sb2FkTWFuYWdlcjo6Q2xpZW50IHsKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8RG93
bmxvYWRNYW5hZ2VyPjsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUHJvY2VzcyYgc2hhcmVkKCk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9X
ZWJJREJGYWN0b3J5QmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcAkocmV2
aXNpb24gMTYwOTcwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQkZhY3RvcnlCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQpAQCAtNTEsNyArNTIsNyBAQCB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJEYXRhYmFzZUJhY2tlCiAKIHN0YXRpYyBJREJEYXRhYmFz
ZUJhY2tlbmRNYXAmIHNoYXJlZERhdGFiYXNlQmFja2VuZE1hcCgpCiB7Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChJREJEYXRhYmFzZUJhY2tlbmRNYXAsIGRhdGFiYXNlQmFja2VuZE1hcCwgKCkp
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJREJEYXRhYmFzZUJhY2tlbmRNYXA+IGRhdGFi
YXNlQmFja2VuZE1hcDsKICAgICByZXR1cm4gZGF0YWJhc2VCYWNrZW5kTWFwOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2Vy
dmVyQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwCShyZXZpc2lv
biAxNjA5NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDYgQEAKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmgiCi0KICNp
bmNsdWRlIDxXZWJDb3JlL0lEQkRhdGFiYXNlTWV0YWRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAKQEAgLTQ3LDggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKHVp
bnQ2NF90LCBpZGVudGlmaWVyLCAoMCkpOwotICAgIHJldHVybiArK2lkZW50aWZpZXI7CisgICAg
c3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAxOworICAgIHJldHVybiBpZGVudGlmaWVyKys7
CiB9CiAKIFBhc3NSZWZQdHI8V2ViSURCU2VydmVyQ29ubmVjdGlvbj4gV2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3BlbmluZ09yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG1haW5GcmFtZU9y
aWdpbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dF
eHRlbnNpb24uY3BwCShyZXZpc2lvbiAxNjA5NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTQyLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB0eXBlZGVm
IEhhc2hNYXA8V2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKiwgSW5qZWN0ZWRCdW5kbGVET01X
aW5kb3dFeHRlbnNpb24qPiBFeHRlbnNpb25NYXA7CiBzdGF0aWMgRXh0ZW5zaW9uTWFwJiBhbGxF
eHRlbnNpb25zKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEV4dGVuc2lvbk1hcCwgbWFw
LCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEV4dGVuc2lvbk1hcD4gbWFwOwogICAg
IHJldHVybiBtYXA7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlw
dFdvcmxkLmNwcAkocmV2aXNpb24gMTYwOTcwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM4LDcgKzM5LDcgQEAgdHlwZWRlZiBIYXNoTWFwPERPTVdy
YXBwZXJXb3JsZCosIEluamVjdAogCiBzdGF0aWMgV29ybGRNYXAmIGFsbFdvcmxkcygpCiB7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChXb3JsZE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFdvcmxkTWFwPiBtYXA7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50
ZXJuYWxzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTUludGVybmFscy5tbQkocmV2aXNpb24gMTYwOTcwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NSW50
ZXJuYWxzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL05vZGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
VGV4dC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIC8vIENsYXNzZXMgdG8g
aW5zdGFudGlhdGUuCiAjaW1wb3J0ICJXS0RPTUVsZW1lbnQuaCIKQEAgLTQ4LDE1ICs0OSwxMyBA
QCBzdGF0aWMgV0tET01UeXBlIHRvV0tET01UeXBlKFdlYkNvcmVUeXBlCiAKIERPTUNhY2hlPFdl
YkNvcmU6Ok5vZGUqLCBXS0RPTU5vZGUgKj4mIFdLRE9NTm9kZUNhY2hlKCkKIHsKLSAgICB0eXBl
ZGVmIERPTUNhY2hlPFdlYkNvcmU6Ok5vZGUqLCBXS0RPTU5vZGUgKj4gQ2FjaGU7Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDYWNoZSwgY2FjaGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8RE9NQ2FjaGU8V2ViQ29yZTo6Tm9kZSosIFdLRE9NTm9kZSAqPj4gY2FjaGU7CiAgICAg
cmV0dXJuIGNhY2hlOwogfQogCiBET01DYWNoZTxXZWJDb3JlOjpSYW5nZSosIFdLRE9NUmFuZ2Ug
Kj4mIFdLRE9NUmFuZ2VDYWNoZSgpCiB7Ci0gICAgdHlwZWRlZiBET01DYWNoZTxXZWJDb3JlOjpS
YW5nZSosIFdLRE9NUmFuZ2UgKj4gQ2FjaGU7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChDYWNo
ZSwgY2FjaGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9NQ2FjaGU8V2ViQ29y
ZTo6UmFuZ2UqLCBXS0RPTVJhbmdlICo+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGU7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAko
cmV2aXNpb24gMTYwOTcwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyT2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01OSw3ICs2MCw3IEBAIHR5cGVkZWYgSGFzaE1h
cDxOb2RlKiwgSW5qZWN0ZWRCdW5kbGVOb2QKIAogc3RhdGljIERPTUhhbmRsZUNhY2hlJiBkb21I
YW5kbGVDYWNoZSgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01IYW5kbGVDYWNoZSwg
Y2FjaGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9NSGFuZGxlQ2FjaGU+IGNh
Y2hlOwogICAgIHJldHVybiBjYWNoZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00v
SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAJKHJldmlzaW9uIDE2MDk3MCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFu
Z2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9KU1JhbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SYW5nZS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0zOSw3ICs0MCw3IEBAIHR5cGVkZWYgSGFzaE1hcDxS
YW5nZSosIEluamVjdGVkQnVuZGxlUmEKIAogc3RhdGljIERPTUhhbmRsZUNhY2hlJiBkb21IYW5k
bGVDYWNoZSgpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChET01IYW5kbGVDYWNoZSwgY2Fj
aGUsICgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RE9NSGFuZGxlQ2FjaGU+IGNhY2hl
OwogICAgIHJldHVybiBjYWNoZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZU9iamVj
dE1hcC5jcHAJKHJldmlzaW9uIDE2MDk3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlVGhyb3R0bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVy
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTI1OCw3ICsyNTksNyBAQCBFeGVjU3Rh
dGUqIE5QUnVudGltZU9iamVjdE1hcDo6Z2xvYmFsRXhlCiAKIHN0YXRpYyBTdHJpbmcmIGdsb2Jh
bEV4Y2VwdGlvblN0cmluZygpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGV4
Y2VwdGlvblN0cmluZywgKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGV4
Y2VwdGlvblN0cmluZzsKICAgICByZXR1cm4gZXhjZXB0aW9uU3RyaW5nOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1
Z2luTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0JKHJldmlzaW9uIDE2MDk3MCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQ
bHVnaW5NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNpbXBvcnQgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTk2LDggKzE5
Nyw3IEBAIHR5cGVkZWYgSGFzaE1hcDxXaW5kb3dSZWYsIE5ldHNjYXBlUGx1Z2kKIAogc3RhdGlj
IFdpbmRvd01hcCYgd2luZG93TWFwKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdpbmRv
d01hcCwgd2luZG93TWFwLCAoKSk7Ci0KKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2luZG93
TWFwIHdpbmRvd01hcDsKICAgICByZXR1cm4gd2luZG93TWFwOwogfQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5jcHAJKHJldmlzaW9uIDE2MDk3MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdz
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC00NCw3ICs0NSw3IEBAIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgU3Rv
cmFnZU5hbWVzcGEKIAogc3RhdGljIExvY2FsU3RvcmFnZU5hbWVzcGFjZU1hcCYgbG9jYWxTdG9y
YWdlTmFtZXNwYWNlTWFwKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKExvY2FsU3RvcmFn
ZU5hbWVzcGFjZU1hcCwgbG9jYWxTdG9yYWdlTmFtZXNwYWNlTWFwLCAoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPExvY2FsU3RvcmFnZU5hbWVzcGFjZU1hcD4gbG9jYWxTdG9yYWdlTmFt
ZXNwYWNlTWFwOwogICAgIHJldHVybiBsb2NhbFN0b3JhZ2VOYW1lc3BhY2VNYXA7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDE2MDk3MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEl0ZXJh
dG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VbmRvU3RlcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwpAQCAtMTcwLDIyICsxNzEsMjIgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OnNob3VsZE1v
dmVSYW5nZUFmdAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmRpZEJlZ2luRWRpdGluZygpCiB7CiAg
ICAgLy8gRklYTUU6IFdoYXQgZ29vZCBpcyBhIG5vdGlmaWNhdGlvbiBuYW1lLCBpZiBpdCdzIGFs
d2F5cyB0aGUgc2FtZT8KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgV2ViVmlld0Rp
ZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbiwgKEFTQ0lJTGl0ZXJhbCgiV2ViVmlld0RpZEJlZ2lu
RWRpdGluZ05vdGlmaWNhdGlvbiIpKSk7Ci0gICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRv
ckNsaWVudCgpLmRpZEJlZ2luRWRpdGluZyhtX3BhZ2UsIFdlYlZpZXdEaWRCZWdpbkVkaXRpbmdO
b3RpZmljYXRpb24uaW1wbCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBX
ZWJWaWV3RGlkQmVnaW5FZGl0aW5nTm90aWZpY2F0aW9uKEFTQ0lJTGl0ZXJhbCgiV2ViVmlld0Rp
ZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlvbiIpKTsKKyAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxl
RWRpdG9yQ2xpZW50KCkuZGlkQmVnaW5FZGl0aW5nKG1fcGFnZSwgV2ViVmlld0RpZEJlZ2luRWRp
dGluZ05vdGlmaWNhdGlvbi5nZXQoKS5pbXBsKCkpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKQogewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0
aW9uLCAoQVNDSUlMaXRlcmFsKCJXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uIikpKTsKLSAg
ICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xpZW50KCkuZGlkQ2hhbmdlKG1fcGFnZSwg
V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbi5pbXBsKCkpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IFdlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24oQVNDSUlMaXRlcmFs
KCJXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uIikpOworICAgIG1fcGFnZS0+aW5qZWN0ZWRC
dW5kbGVFZGl0b3JDbGllbnQoKS5kaWRDaGFuZ2UobV9wYWdlLCBXZWJWaWV3RGlkQ2hhbmdlTm90
aWZpY2F0aW9uLmdldCgpLmltcGwoKSk7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oRnJhbWUqIGZyYW1l
KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uLCAoQVNDSUlMaXRlcmFsKCJXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uIikpKTsKLSAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRWRpdG9yQ2xp
ZW50KCkuZGlkQ2hhbmdlU2VsZWN0aW9uKG1fcGFnZSwgV2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbi5pbXBsKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IFdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24oQVNDSUlMaXRlcmFsKCJXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uIikpOworICAgIG1fcGFnZS0+aW5qZWN0
ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5kaWRDaGFuZ2VTZWxlY3Rpb24obV9wYWdlLCBXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uLmdldCgpLmltcGwoKSk7CiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTgsOCArMTk5LDggQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6ZGlk
RW5kRWRpdGluZygpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIFdlYlZpZXdE
aWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uLCAoQVNDSUlMaXRlcmFsKCJXZWJWaWV3RGlkRW5kRWRp
dGluZ05vdGlmaWNhdGlvbiIpKSk7Ci0gICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNs
aWVudCgpLmRpZEVuZEVkaXRpbmcobV9wYWdlLCBXZWJWaWV3RGlkRW5kRWRpdGluZ05vdGlmaWNh
dGlvbi5pbXBsKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IFdlYlZpZXdE
aWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uKEFTQ0lJTGl0ZXJhbCgiV2ViVmlld0RpZEVuZEVkaXRp
bmdOb3RpZmljYXRpb24iKSk7CisgICAgbV9wYWdlLT5pbmplY3RlZEJ1bmRsZUVkaXRvckNsaWVu
dCgpLmRpZEVuZEVkaXRpbmcobV9wYWdlLCBXZWJWaWV3RGlkRW5kRWRpdGluZ05vdGlmaWNhdGlv
bi5nZXQoKS5pbXBsKCkpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxNjA5NzApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVUlF
dmVudFdpdGhLZXlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2lkZ2V0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTA3MywxMyArMTA3NCwxMyBA
QCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwbHVnCiAKIGJvb2wgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNob3VsZEZhbGxCYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgUmVzb3VyY2VFcnJvciwgY2FuY2Vs
bGVkRXJyb3IsICh0aGlzLT5jYW5jZWxsZWRFcnJvcihSZXNvdXJjZVJlcXVlc3QoKSkpKTsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFJlc291cmNlRXJyb3IsIHBsdWdpbldpbGxIYW5k
bGVMb2FkRXJyb3IsICh0aGlzLT5wbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKFJlc291cmNlUmVz
cG9uc2UoKSkpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUmVzb3VyY2VFcnJv
cj4gY2FuY2VsbGVkRXJyb3IodGhpcy0+Y2FuY2VsbGVkRXJyb3IoUmVzb3VyY2VSZXF1ZXN0KCkp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUmVzb3VyY2VFcnJvcj4gcGx1Z2lu
V2lsbEhhbmRsZUxvYWRFcnJvcih0aGlzLT5wbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKFJlc291
cmNlUmVzcG9uc2UoKSkpOwogCi0gICAgaWYgKGVycm9yLmVycm9yQ29kZSgpID09IGNhbmNlbGxl
ZEVycm9yLmVycm9yQ29kZSgpICYmIGVycm9yLmRvbWFpbigpID09IGNhbmNlbGxlZEVycm9yLmRv
bWFpbigpKQorICAgIGlmIChlcnJvci5lcnJvckNvZGUoKSA9PSBjYW5jZWxsZWRFcnJvci5nZXQo
KS5lcnJvckNvZGUoKSAmJiBlcnJvci5kb21haW4oKSA9PSBjYW5jZWxsZWRFcnJvci5nZXQoKS5k
b21haW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGVycm9yLmVycm9yQ29k
ZSgpID09IHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IuZXJyb3JDb2RlKCkgJiYgZXJyb3IuZG9t
YWluKCkgPT0gcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvci5kb21haW4oKSkKKyAgICBpZiAoZXJy
b3IuZXJyb3JDb2RlKCkgPT0gcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvci5nZXQoKS5lcnJvckNv
ZGUoKSAmJiBlcnJvci5kb21haW4oKSA9PSBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yLmdldCgp
LmRvbWFpbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDE2MDk3MCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKQogewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoV2ViUGxhdGZvcm1TdHJhdGVnaWVzLCBwbGF0Zm9ybVN0
cmF0ZWdpZXMsICgpKTsKLSAgICBzZXRQbGF0Zm9ybVN0cmF0ZWdpZXMoJnBsYXRmb3JtU3RyYXRl
Z2llcyk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlBsYXRmb3JtU3RyYXRlZ2llcz4g
cGxhdGZvcm1TdHJhdGVnaWVzOworICAgIHNldFBsYXRmb3JtU3RyYXRlZ2llcygmcGxhdGZvcm1T
dHJhdGVnaWVzLmdldCgpKTsKIH0KIAogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZp
c2lvbiAxNjA5NzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTIg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TdG9yYWdlU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Zpc2l0ZWRMaW5r
U3RyYXRlZ3kuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFdlYlBsYXRmb3JtU3RyYXRlZ2llcyA6IHB1YmxpYyBXZWJDb3Jl
OjpQbGF0Zm9ybVN0cmF0ZWdpZXMsIHByaXZhdGUgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5LCBw
cml2YXRlIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6TG9hZGVy
U3RyYXRlZ3ksIHByaXZhdGUgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5LCBwcml2YXRlIFdl
YkNvcmU6OlBsdWdpblN0cmF0ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlNoYXJlZFdvcmtlclN0cmF0
ZWd5LCBwcml2YXRlIFdlYkNvcmU6OlN0b3JhZ2VTdHJhdGVneSwgcHJpdmF0ZSBXZWJDb3JlOjpW
aXNpdGVkTGlua1N0cmF0ZWd5IHsKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8V2ViUGxhdGZv
cm1TdHJhdGVnaWVzPjsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKCk7CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zvcndh
cmRMaXN0UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAJKHJldmlzaW9uIDE2MDk3MCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0hpc3RvcnlJdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDksMTMgKzUwLDEzIEBAIHR5cGVkZWYgSGFzaE1h
cDxSZWZQdHI8SGlzdG9yeUl0ZW0+LCB1aW4KIAogc3RhdGljIElEVG9IaXN0b3J5SXRlbU1hcCYg
aWRUb0hpc3RvcnlJdGVtTWFwKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKElEVG9IaXN0
b3J5SXRlbU1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPElEVG9IaXN0
b3J5SXRlbU1hcD4gbWFwOzsKICAgICByZXR1cm4gbWFwOwogfSAKIAogc3RhdGljIEhpc3RvcnlJ
dGVtVG9JRE1hcCYgaGlzdG9yeUl0ZW1Ub0lETWFwKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEhpc3RvcnlJdGVtVG9JRE1hcCwgbWFwLCAoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhpc3RvcnlJdGVtVG9JRE1hcD4gbWFwOwogICAgIHJldHVybiBtYXA7CiB9IAogCg==
</data>
<flag name="review"
          id="243553"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>